通常,您发布的代码应该可以工作,并且在下一个网格重新加载新的代码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 名称转换。