我有一个jqgrid,网格从我的服务器获取json格式的数据。
网格有一些空白单元格,用户可以双击它们,然后发送 ajax 请求,以便服务器更新值(当前日期)并重新加载网格,我遇到的问题是,如果我单击快速 2或更多单元格,只有第一个单元格重新加载,如果我刷新页面,我的所有数据都会加载,所以我知道所有请求都可以发送,但似乎网格重新加载,在最后一个完成之前无法执行新请求,知道如何解决它吗?
我最终做了: 创建一个像这样的变量:
var lastRequestXHR;
在我的 jqgrid 代码中添加:
loadBeforeSend: function (xhr) {
lastRequestXHR = xhr;
},
和我的重新加载功能:
function refreshGrid() {
if (lastRequestXHR != null) {
lastRequestXHR.abort();
}
jQuery('#scheduledGrid').trigger('reloadGrid');
}
最佳答案
只需将每个 ajax 请求推送到任何变量,并在成功函数中中止所有请求。 一些代码如下我的意图:
requests.push(
$.ajax({
type: 'post',
url: '<any url>',
data: ResponseData,
success: function(data) {
for(var i = 0; i < requests.length; i++)
requests[i].abort();
}
}));
请注意,这将取消所有请求及其客户端处理程序,发送的服务器请求将执行,但客户端不会等待响应。
关于javascript - 在新请求上取消当前请求jqgrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18872938/