Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 为每个jqGrid ajax调用添加参数_Jquery_Asp.net Mvc_Jqgrid - Fatal编程技术网

Jquery 为每个jqGrid ajax调用添加参数

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

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

...
    $('[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
        }
    });