dilemna与jqgrid和ajaxfileupload

时间:2012-05-25 15:35:57

标签: ajax jqgrid

我正在使用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事件中!!! 有什么想法可以解决这个难题吗?

1 个答案:

答案 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中描述。