一般而言,您发布的代码应该可以正常工作,并且将会在下一次重新加载时使用新的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"; }
}
在你可以在功能实现更多的逻辑的方式定义网格,你可以使用一些变量从外scote在函数主体的内部,或者从页面上存在的控件获取一些值(有关详细信息,请参见here)。在这种情况下,您可以实施动态specialParam
而不使用getGridParam
。
最后一句话。已从myGridOnBeforeRequest
的颜色(将其与您问题中的MyGridOnBeforeRequest
的颜色进行比较)可以看出,它将以另一种方式进行解释。如果函数的名称以大写字母开头,则表示符合常用的名称转换,您可以定义新类MyGridOnBeforeRequest
的构造函数。你必须使用它作为var test = new MyGridOnBeforeRequest();
:使用new
。只需比较var now = new Date();
。严格建议持有标准的JavaScript名称转换。