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