免费的 jqGrid:在 beforeSubmit 函数中包装 POST 数据
free jqGrid: wrapping POST data in beforeSubmit function
我正在使用 Oleg 的免费 jqGrid。在我的表单编辑之后,我试图包装我的 POST 数据,以便在 PHP 中我得到一个很好的数组,如:
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, ''] );
}
不幸的是,这不起作用; console.log(d) 很好地打印出想要的结果,但 postdata 没有改变。我不精通 javascript,但我怀疑全局 postdata 没有从函数内部更改,不幸的是函数不允许我 return 它。
关于如何解决这个问题的任何建议。这是一个小问题,但我只是认为它看起来更结构化,并且更易于维护,以便在运算符及其数据之间进行清晰的分离。
谢谢。
回调 beforeSubmit
不是您的最佳选择。相反,我建议您使用 serializeEditData
回调,您可以将其定义为表单编辑选项(在 jqGrid 的 formEditing
参数内)或作为 jqGrid 的参数。回调得到 postdata
作为唯一的参数,它应该 return 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;
}
我正在使用 Oleg 的免费 jqGrid。在我的表单编辑之后,我试图包装我的 POST 数据,以便在 PHP 中我得到一个很好的数组,如:
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, ''] );
}
不幸的是,这不起作用; console.log(d) 很好地打印出想要的结果,但 postdata 没有改变。我不精通 javascript,但我怀疑全局 postdata 没有从函数内部更改,不幸的是函数不允许我 return 它。
关于如何解决这个问题的任何建议。这是一个小问题,但我只是认为它看起来更结构化,并且更易于维护,以便在运算符及其数据之间进行清晰的分离。
谢谢。
回调 beforeSubmit
不是您的最佳选择。相反,我建议您使用 serializeEditData
回调,您可以将其定义为表单编辑选项(在 jqGrid 的 formEditing
参数内)或作为 jqGrid 的参数。回调得到 postdata
作为唯一的参数,它应该 return 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;
}