如果我在需要一段时间来处理的 GET 上加载或重新加载 jqGrid,然后在调用$("#myJqGrid").trigger("reloadGrid");
第一个进程时进行后续调用,那么第二个调用永远不会发出 GET 请求。有没有办法让它们排队或取消它们?或者任何其他处理这个问题的想法?不想让用户与一堆排队的请求混淆,他们认为他们正在获得对他们刚刚提出的请求的响应,但这是第一个请求的结果。
如果有一种干净的方法可以禁用 jqGrid 在初始加载时生成 GET,我认为这对我来说不是什么大问题。
如果我在需要一段时间来处理的 GET 上加载或重新加载 jqGrid,然后在调用$("#myJqGrid").trigger("reloadGrid");
第一个进程时进行后续调用,那么第二个调用永远不会发出 GET 请求。有没有办法让它们排队或取消它们?或者任何其他处理这个问题的想法?不想让用户与一堆排队的请求混淆,他们认为他们正在获得对他们刚刚提出的请求的响应,但这是第一个请求的结果。
如果有一种干净的方法可以禁用 jqGrid 在初始加载时生成 GET,我认为这对我来说不是什么大问题。
最初阻止加载 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 队列。例如,请参阅答案作为示例。