我正在尝试使用jqgrid(在Zend Framework项目中)实现文件上传。 jqgrid允许您创建“文件”类型的输入字段,但不启用ENCTYPE =“ multipart / form-data”。
创建者建议使用另一个插件来处理文件上传,特别是Ajax File Upload。他说要使用onInitializeForm()
方法初始化它,但确切的方法对我来说还不清楚。他说,
“我也建议您可以使用Ajax
文件上传插件并初始化它
在onInitializeForm事件中只有一次。”
这就是有关如何执行此操作的说明。
到目前为止,我所做的是:
我有显示文件输入字段的jqgrid编辑表单,并且所有适当的插件文件都已安装到位并正确加载。我无法确定的是如何获取提交的表单以正确地上传文件(我想我无法弄清楚如何“使用onInitializeForm事件初始化ajax文件上传插件”)。任何想法都将不胜感激。
值得的是,我可以使用onInitializeForm来触发类似alert('test')之类的简单事件,但是每次加载网格时它都会触发越来越多的数字(例如,第一次没有触发,下次加载网格时发出警报,两次下次发出警报等)。
参考方案
答案就像:
<!-- Add your other js files like jQuery, jqGrid etc. -->
<script type="text/javascript" src="js/ajaxfileupload.js"></script>
<script language="javascript">
$(function() {
$(document).ready(function() {
jQuery("#your_grid_id").jqGrid({
url: 'your_url',
datatype: 'json',
mtype: 'post',
pager: 'your_pager_id',
colNames: ["Description", "File"],
colModel: [{name: "desc", index: "desc", ... ... ...}, {name: "file_to_upload", index: "file_to_upload", edittype: "file", ... ... ...}]
}).navGrid("#your_pager_id",{{... ... ...},{
jqModal:true,closeAfterEdit: true,recreateForm:true,onInitializeForm : function(formid){
$(formid).attr('method','POST');
$(formid).attr('action','');
$(formid).attr('enctype','multipart/form-data');
}, afterSubmit : function(response, postdata){
$.ajaxFileUpload({
url: 'your_file_url_where_upload_operates',
secureuri:false,
fileElementId:'file_to_upload',
dataType: 'json',
success: function (data, status) {
alert("Upload Complete.");
}
});
}
}},{
jqModal:true,closeAfterAdd: true,recreateForm:true,onInitializeForm : function(formid){
$(formid).attr('method','POST');
$(formid).attr('action','');
$(formid).attr('enctype','multipart/form-data');
}, afterSubmit : function(response, postdata){
$.ajaxFileUpload({
url: 'your_file_url_where_upload_operates',
secureuri:false,
fileElementId:'file_to_upload',
dataType: 'json',
success: function (data, status) {
alert("Upload Complete.");
}
});
}
}
});
});
});
</script>
我使用recreateForm: true
来确保在每个“添加”或“编辑”上都重新创建表单。
如果您还有问题,请随时问我。
php-casperjs获取内部文本 - php我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…
使用jQuery将值增加到attr - php我想增加i的值。 “ for”循环不起作用。$("a[href$='.xls']").appendTo(".xl1").attr('id','xl'+i); 我搜索所有excel文件,并将它们放在容器中并增加其id的值。谢谢吉恩 参考方案 $("a[…
php getdate()-小时不正确 - php我在iframe中将php用于计数器。我正在使用getdate();功能。我的当地时间不是下午12:16,如果我使用getdate();从php获取现在的本地时间,小时显示为13。我从php getdate()回答的值应该不是12吗?$d1=getdate(); $hournew=$d1['hours']; echo $hournew .…
php:是否有充分的理由引用所有数组键/索引? - php我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…
当文本等于单选按钮的值时,选择单选按钮 - php当下拉菜单中的文本等于值时,是否可以选择2个名称相同但值不同的单选按钮中的1个?https://paste.ee/p/2iCjA第97行我用if-else尝试过:if($('input[name="anrede"]').val() == 'Herr') { $("#Herr").…