javascript - 在新请求上取消当前请求jqgrid

标签 javascript jquery ajax jqgrid

我有一个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/

相关文章:

javascript - 当我们到达那个点时开始计数

jquery - 使用 CSS 和 jQuery 的移动菜单

javascript - 如何左对齐左 ul li 元素

javascript - 同步处理可观察订阅事件

javascript - 自动完成 minChars 属性

c# - 如何使用任何客户端脚本或服务器端脚本禁用 Calender Extender 中的上一个日期

javascript - 了解 JSON 并显示

javascript - 使用带有 AJAX 数据源的 DataTables 的列名

javascript - 如何使用 history.js 捕获一次状态更改事件?

javascript - 使用 jQuery 和 AJAX 轮询服务器,没有初始延迟