取消XHR请求

时间:2011-12-12 09:16:45

标签: php javascript jquery ajax xmlhttprequest

我有:

function send(){
  $.get("/site/send.php", function(data){
    alert(data);
  }
}

在site / send.php中我有:

sleep(1000)
echo "OK";

接下来我在我的js文件中:

send();
$("#click").click(function(){
  $.get("/site/reset.php", function(data){
    alert(data);
  }
})

并在reset.php中:

echo "RESET";

在这个例子中,我有XHR直到睡眠< 1000.在Firebug中,我看到了这一点。我没有在函数send()中有响应和成功,直到睡眠为< 1000.这没关系,但如果我使用.click(),我想取消这个请求。

现在我有所有时间函数send(),直到她没有停止(> 1000)然后我没有启动函数与.click()。为什么这不是异步?

这可能吗?也许有可能取消网站上的所有请求?

2 个答案:

答案 0 :(得分:5)

您提出的每个请求实际上都是一个单独的实例或线程。您无法通过发出其他请求来取消一个请求。您可以做的是取消客户端的当前请求。阅读this question

答案 1 :(得分:4)

您必须保留对XHR对象的引用,以便中止它。

这样的事情:

var myXhr = null;
$("#click").click(function(){
  myXhr = $.get("/site/reset.php", function(data){
    alert(data);
  });
})

然后中止:

if (myXhr) {
  myXhr.abort();
}

虽然我真的不确定语法。

您可能需要查看some similiar questions