jqGrid:将loadonce作为参数添加到AJAX请求中

jqGrid:将loadonce作为参数添加到AJAX请求中,jqgrid,Jqgrid,我有一个PHP脚本来处理许多不同jqGrid的AJAX请求 我使用'sidx'和'sord'参数生成“orderby”语句,并使用'page'和'rows'参数生成“LIMIT”语句 与PHP示例类似 问题是,在PHP脚本中,我无法确定是否设置了当前jqGrid的loadonce参数。 但只有在未设置的情况下,我才必须过滤返回的数据(按页和行限制) 如何强制jqGrid发送附加参数? 我不想改变我所有的网格。是否有一种全球性的方式来做这件事 ----编辑--- 有了这个答案的帮助,我现在明白了

我有一个PHP脚本来处理许多不同jqGrid的AJAX请求

我使用'sidx'和'sord'参数生成“orderby”语句,并使用'page'和'rows'参数生成“LIMIT”语句

与PHP示例类似

问题是,在PHP脚本中,我无法确定是否设置了当前jqGrid的loadonce参数。 但只有在未设置的情况下,我才必须过滤返回的数据(按页和行限制)

如何强制jqGrid发送附加参数? 我不想改变我所有的网格。是否有一种全球性的方式来做这件事

----编辑---

有了这个答案的帮助,我现在明白了

$.extend($.jgrid.defaults, {
    postData: {
        loadingType: function() {
            var isLoadonce = $("#list1").jqGrid('getGridParam', 'loadonce');
            console.log('isLoadonce: ' + isLoadonce);
            return isLoadonce ? 'loadAll' : 'loadChunk';
        },
    },
});
如果网格的ID为“list1”,则此操作有效。我如何在没有ID的情况下引用当前网格

----编辑2----

这似乎奏效了。在我看来,这有点像黑客。有更好的办法吗

$.extend($.jgrid.defaults, {
    serializeGridData: function(postData) {
        var isLoadonce = $(this).jqGrid('getGridParam', 'loadonce');
        var newPostData = $.extend(postData, {
            loadingType: isLoadonce ? 'loadAll' : 'loadChunk'
        });
        return $.param(newPostData);
    },
});

要传入额外参数,可以添加:

 postData: { ExtraDataName: ExtraDataValue },

然后,每当jqGrid去获取数据时,它都会将该名称对传递给您的控制器

使用
serializeGridData
,jqGrid提供一个事件来修改随请求发送的数据。在当前网格的上下文中调用该事件,因此我们可以使用
this
访问当前网格

通过扩展
$.jgrid.defaults
我们可以使所有网格在不更改任何网格的情况下将其
loadonce
参数作为附加请求参数发送

$.extend($.jgrid.defaults, {
    serializeGridData: function(postData) {
        var isLoadonce = $(this).jqGrid('getGridParam', 'loadonce');
        var newPostData = $.extend(postData, {
            loadingType: isLoadonce ? 'loadAll' : 'loadChunk'
        });
        return $.param(newPostData);
    },
});

你能提供一个JSFIDLE来解决这个问题吗?@Floradu88我不知道我能在JSFIDLE中向你展示什么。我的问题不是网格不工作。但是我想知道是否有一种方法可以扩展网格的ajax请求。是的,但是这种方法的附加值是静态的。在服务器站点上,我想知道当前网格是否为“loadonce”。在我的第二次“编辑”中,我找到了一种将其归档的方法。我只是不知道这是否是最好的方法。我不确定我是否理解这个问题?在上面的示例中,如果要传入loadonce值,只需设置
ExtraDataName:$(this).jqGrid('getGridParam','loadonce')