0

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

如果有一种干净的方法可以禁用 jqGrid 在初始加载时生成 GET,我认为这对我来说不是什么大问题。

4

1 回答 1

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 队列。例如,请参阅答案作为示例。

于 2012-04-09T16:10:02.973 回答