我正在使用jqgrid和ajaxFileUpload.js脚本,以便将参数和文件传递给php脚本。代码的结构如下:
...
url:url_1.php,
beforeSubmit: function (postdata,formid)
{
$.ajaxFileUpload (
{
url: url_2.php,
...
success:
error:
}),
return[true,""];
},
afterSubmit: function(reponse,postdata)
{
...
return [true,'',''];
}
我有一个困境:
根据jqgrid行为,调用url_2.php,然后调用url_1.php
url_2.php处理数据(参数+文件),url_1.php什么都不处理
url_2.php可能会返回错误或消息(例如“已经存在”)但是,afutsubmit事件会在表单中显示错误,并且此事件会从url_1.php收到错误!!!
我想我有义务将ajaxfileupload放在beforesubmit事件中!!!
有什么想法可以解决这个难题吗?
答案 0 :(得分:0)
您可以使用jquery表单插件和jqGrid dataProxy方法。
useDataProxy: true,
dataProxy : function (opts, act) {
opts.iframe = true;
var $form = $('#FrmGrid_' + $grid.jqGrid('getGridParam', 'id'));
//Prevent non-file inputs double serialization
var ele = $form.find('INPUT,TEXTAREA,SELECT').not(':file');
ele.each(function () {
$(this).data('name', $(this).attr('name'));
$(this).removeAttr('name');
});
//Send only previously generated data + files
$form.ajaxSubmit(opts);
//Set names back after form being submitted
setTimeout(function () {
ele.each(function () {
$(this).attr('name', $(this).data('name'));
});
}, 200);
};
例如http://jqgrid-php.net文件fileUpload类使用它。这也在How to force dataProxy call in form editing if editurl is set in jqgrid中描述。