gpt4 book ai didi

jquery - 向每个 jqGrid ajax 调用添加参数

转载 作者:行者123 更新时间:2023-12-01 06:54:14 25 4
gpt4 key购买 nike

当页面上有 jqGrid 时,我想扩展它以传递额外的参数。迄今为止我最好的尝试:

...
$('[role=grid]').jqGrid('setGridParam', { 'serializeGridData':MyGridOnBeforeRequest });

function MyGridOnBeforeRequest (postData) {
var newPostData = $.extend(postData, {
specialParam: "foo"
});
return $.param(newPostData);
}
...

我这样做是因为 jqGrid 看起来会忽略您对 jQuery 的 ajax 处理所做的任何更改。

谢谢。

最佳答案

一般来说,您发布的代码应该可以工作,并且在下一次网格重新加载时将使用新的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"; }
}

为了在函数中实现更多逻辑,您可以使用函数体内部外部变量中的一些变量,或者从页面上现有的控件中获取一些值(详细信息请参见here) 。在这种情况下,您可以在不使用 getGridParam 的情况下实现动态 specialParam

最后一句话。从 myGridOnBeforeRequest 的颜色(将其与问题中的 MyGridOnBeforeRequest 的颜色进行比较)可以看出它将以另一种方式解释。如果函数名称以大写字母开头,则表示与您定义新类MyGridOnBeforeRequest构造函数的常用名称转换相对应。您必须将其用作 var test = new MyGridOnBeforeRequest();:使用 new。只需与 var now = new Date(); 进行比较即可。强烈建议保留标准 JavaScript 名称转换。

关于jquery - 向每个 jqGrid ajax 调用添加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10796809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com