如何在 jqGrid 中对重新加载网格请求进行排队?或者如何在加载时禁用 GET



如果我在 GET 上加载或重新加载 jqGrid,需要一段时间来处理,然后在调用第一个进程时对$("#myJqGrid").trigger("reloadGrid");进行后续调用,那么第二次调用永远不会发出 GET 请求。 有没有办法将它们排队或取消? 或者还有其他处理这个问题的想法吗? 不想将用户与一堆排队的请求混淆,他们认为他们正在获得他们刚刚发出的请求的响应,但这是第一个请求的结果。

我认为,如果有一种方法可以禁用 jqGrid 在初始加载时进行 GET,这对我来说不会是一个大问题。

最初阻止加载 jqGrid 的最简单方法是在初始化时使用 datatype: 'local'。如果你真的需要用来自服务器的数据填充网格,应该首先将datatype更改为'json'setGridParam 'xml',然后触发reloadGrid

$("#gridId").jqGrid('setGridParam', {datatype: 'json'}).trigger('reloadGrid');

jqGrid 无法对 Ajax 请求进行排队。如果你真的需要发出许多连续的Ajax请求,你应该在loadComplete内发出下一个请求。例如,您可以创建一个请求数组,loadComplete测试数组是否为空。如果它不为空,则可以在数组setTimeout回调和调用 shift 方法中调用.trigger('reloadGrid')

在大多数情况下,你并不真正需要实现Ajax队列。例如,请参阅答案作为示例。

最新更新