2

我有一个 jqgrid,网格从我的服务器获取 json 格式的数据。

网格有一些空白单元格,用户可以双击它们,然后发送一个 ajax req,以便服务器更新一个值(当前日期)并重新加载网格,我遇到的问题是,如果我点击 2 个或更多单元格快速,只有第一个单元格的重新加载发生,如果我刷新我的页面,我的所有数据都已加载,所以我知道所有请求都可以发送,但网格重新加载,在最后一个完成之前无法执行新请求,任何想法如何解决?

wi 最终做了:创建一个 var,如:

var lastRequestXHR;

在我的 jqgrid 代码中,我添加:

    loadBeforeSend: function (xhr) {
        lastRequestXHR = xhr;
    },

和我的重新加载功能:

function refreshGrid() {
    if (lastRequestXHR != null) {
        lastRequestXHR.abort();
    }
    jQuery('#scheduledGrid').trigger('reloadGrid');
}
4

1 回答 1

2

只需将每个 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();
            }
        }));

请注意,这将取消所有请求及其在客户端的处理程序,发送的服务器请求将执行,但客户端不会等待响应。

于 2013-09-18T13:14:27.317 回答