取消对新请求jqgrid的当前请求

时间:2013-09-18 12:58:55

标签: javascript jquery ajax jqgrid

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

网格有一些blanck单元格,用户可以双击它们,然后发送ajax req,这样服务器更新一个值(当前日期)并重新加载网格,问题就是如果我点击快速2或者更多的单元格,只有第一个单元格的重新加载,如果我刷新我的页面,我的所有数据都被加载,所以我知道所有请求发送正常但是表示网格重新加载,直到lastone完成后才能执行新的请求,关于如何解决它的任何想法?

我最后做了什么: 创建一个像:

的var
var lastRequestXHR;

在我的jqgrid代码上添加:

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

和我的重装功能:

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

1 个答案:

答案 0 :(得分: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();
            }
        }));

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