Jquery 为每个jqGrid ajax调用添加参数
当页面上有一个jqGrid时,我想扩展它以传入一个额外的参数。我迄今为止最好的尝试是:Jquery 为每个jqGrid ajax调用添加参数,jquery,asp.net-mvc,jqgrid,Jquery,Asp.net Mvc,Jqgrid,当页面上有一个jqGrid时,我想扩展它以传入一个额外的参数。我迄今为止最好的尝试是: ... $('[role=grid]').jqGrid('setGridParam', { 'serializeGridData':MyGridOnBeforeRequest }); function MyGridOnBeforeRequest (postData) { var newPostData = $.extend(postData, { sp
...
$('[role=grid]').jqGrid('setGridParam', { 'serializeGridData':MyGridOnBeforeRequest });
function MyGridOnBeforeRequest (postData) {
var newPostData = $.extend(postData, {
specialParam: "foo"
});
return $.param(newPostData);
}
...
我这样做是因为jqGrid似乎忽略了您对jQuery的ajax处理所做的任何更改
谢谢。一般来说,您发布的代码应该有效,在下一次网格重新加载时,将使用新的
序列化GridData
在发布时使用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()代码>:使用新建。只需与var now=new Date()进行比较即可代码>。严格建议保持标准JavaScript名称转换。通常,您发布的代码应该可以工作,并且在下一个网格重新加载新的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()代码>:使用新建。只需与var now=new Date()进行比较即可代码>。严格建议保持标准JavaScript名称转换。如果某个设置不会有太大变化,您可以将其添加到
$.jgrid.defaults
通过使用如下内容
function getSpecialParam()
{
return 'foo';
}
$.jgrid.defaults = $.extend($.jgrid.defaults,
{
postedData:{
specialParam:getSpeicalParam
}
});
如果某个设置不会有太大变化,您可以将其添加到
$.jgrid.defaults
通过使用如下内容
function getSpecialParam()
{
return 'foo';
}
$.jgrid.defaults = $.extend($.jgrid.defaults,
{
postedData:{
specialParam:getSpeicalParam
}
});