更改页面后在jQuery中停止Ajax请求

时间:2014-08-25 03:42:31

标签: javascript jquery ruby-on-rails ajax jquery-ui

考虑在加载页面时运行的代码:

if ($('#content-recommendation').length) {
    $.ajax({
    url:'/get_content_recommendation/' + gon.item_id + '.js',
    type:"get"
  });
}

此请求大约需要15秒才能完成开发。如果我转到另一个页面,我必须等到Ajax完成,所以如何取消该Ajax请求?

2 个答案:

答案 0 :(得分:1)

您可以使用abort()方法中止请求 - 但要注意它只会中止客户端侦听器的执行,任务初始化的服务器端进程仍将运行

//in a shared scope
var xhr;

//then
if ($('#content-recommendation').length) {
    xhr = $.ajax({
        url: '/get_content_recommendation/' + gon.item_id + '.js',
        type: "get"
    }).always(function () {
        xhr = undefined;
    });
}

//later before moving to the new page
if (xhr && xhr.readyState != 4) {
    xhr.abort();
}

How to cancel/abort jQuery AJAX request?

答案 1 :(得分:0)

您可以使用abort()取消当前请求。详细说明How to cancel/abort jQuery AJAX request?