通常,您发布的代码应该可以工作,并且在下一个网格重新加载新的代码serializeGridData
时将被使用。
serializeGridData
您以发布的方式使用它只是有点奇怪。改用postData
参数就足够了:
var postData = $('#grid').jqGrid('getGridParam', "postData");
$.extend(postData: {specialParam: "foo"});
此外,在您的原始代码中,您使用$.extend(postData, {specialParam: "foo"});
哪个修改原始postData
. 这还不错,但总的来说代码
function myGridOnBeforeRequest (postData) {
return $.extend({}, postData, {specialParam: "foo"});
}
甚至
function myGridOnBeforeRequest (postData) {
return $.extend(true, {}, postData, {specialParam: "foo"});
}
会更干净。的用法$.param
并不是真正需要的。如果你返回一个对象,那么 jQuery.ajax 会$.param
自动为你调用。
一种更常见的方法是直接使用postData
看起来像的参数定义网格
postData: {
specialParam: function () { return "foo"; }
}
在您可以在函数中实现更多逻辑的方式中,您可以使用函数主体内部外部代码中的一些变量,或者从页面上现有的控件中获取一些值(有关详细信息,请参见此处)。在这种情况下,您可以在不 specialParam
使用getGridParam
.
最后一句话。已经从myGridOnBeforeRequest
(将其与MyGridOnBeforeRequest
您的问题中的颜色进行比较)的颜色可以看出它将以另一种方式解释。如果函数名称以大写字母开头,则表示与您定义新类的构造函数的常用名称转换相对应MyGridOnBeforeRequest
。您必须将其用作var test = new MyGridOnBeforeRequest();
:使用new
. 只是比较var now = new Date();
。强烈建议持有标准的 JavaScript 名称转换。