如果我在GET上加载或重新加载jqGrid需要一段时间来处理,然后在调用第一个进程时对$("#myJqGrid").trigger("reloadGrid");
进行后续调用,那么第二个调用永远不会发出GET请求。有没有办法让我们排队或取消它们?或处理此问题的任何其他想法?不希望将用户与一堆排队请求混淆,他们认为他们正在响应他们刚刚发出的请求,但这是第一个请求的结果。
如果有一个干净的方法来禁止jqGrid在初始加载时进行GET,我认为这对我来说不是一个问题。
答案 0 :(得分:1)
最初阻止加载jqGrid的最简单方法是在初始化时使用datatype: 'local'
。如果您确实需要使用服务器中的数据填充网格,则应首先将datatype
更改为'json'
或'xml'
setGridParam
,然后触发reloadGrid
}:
$("#gridId").jqGrid('setGridParam', {datatype: 'json'}).trigger('reloadGrid');
jqGrid具有无方式来排队Ajax请求。如果您确实需要发出许多连续的Ajax请求,则应在loadComplete
内进行下一个请求。例如,您可以创建一个请求数组,在loadComplete
中测试数组是否为空。如果它不是空的,您可以在.trigger('reloadGrid')
回调中调用setTimeout
并调用数组的shift方法。
在大多数情况下,您实际上并不需要实现Ajax队列。例如,请参阅the answer作为示例。