2016-12-30 106 views
0

我使用Oleg的免费jqGrid。我的表单编辑后,我试图总结我的POST数据,因此,在PHP我得到一个不错的阵列,如:免费jqGrid:将POST数据封装在beforeSubmit函数中

Array(
oper => edit, 
data => Array(
    foo => '123', 
    bar => 'xyz', 
    ... 
    ) 
) 

其中运营商和其经营的数据很好地分离。

我直观的方法本来是这样的:

  beforeSubmit: function(postdata, formid) { 
        var d = {}; 
        d.data = postdata; 
        console.log(d); 
        postdata = d; 
        return([true, '']); 
      } 

Unfortuntely这不起作用; console.log(d)很好地打印所需的结果,但postdata不会更改。我不熟悉JavaScript,但我怀疑全局postdata没有从函数内部改变,不幸的是该函数不允许我返回它。

关于如何解决这个问题的任何建议。这是一个小问题,但我只是认为它看起来更加结构化,并且更易于维护,使操作员和数据之间有清晰的分离。

谢谢。

回答

1

回调beforeSubmit不是您的案例中的最佳选择。相反,我建议您使用serializeEditData回调,您可以将其定义为表单编辑选项(在jqGrid的formEditing参数内部)或作为jqGrid的参数。回调得到postdata作为唯一的参数,它应该返回应该发送到服务器的JSON字符串的修改后的对象。代码可能大约如下

serializeEditData: function (postdata) { 
    var d = { 
      oper: postdata.oper, 
      data: $.extend(true, {}, postdata) // make copy 
     }; 
    delete d.data.oper; // remove unneeded oper property 
    return d; 
} 
+0

youdaman !!再次感谢,哥们! – Roadowl

+0

@Roadowl:不客气! – Oleg