1

我正在使用 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 可以返回错误或消息(例如“已经存在”),但是错误通过 aftersubmit 事件显示在表单中,并且该事件从 url_1.php 接收错误!
我想我有义务将 ajaxfileupload 放在 beforesubmit 事件中!
有什么想法可以解决这个困境吗?

4

1 回答 1

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 类使用这个。如果在 jqgrid 中也设置了 editurl,如何在表单编辑中强制 dataProxy 调用中对此进行了描述。

于 2012-05-28T07:39:10.883 回答