中止正确的ajax

时间:2012-05-03 21:56:36

标签: javascript jquery

我的问题可能很吵,但我实际上找不到答案。

我想在特定的ajax上使用abort()方法。但是我总是使用request = $。ajax ...来处理我的所有请求和request.abort()取消所有我的ajax,只有我想要的那个。

有没有办法通过命名它或其他东西指向正确的? 这是我的代码

request.abort();
request = $.ajax({
url: "getphp/gettooltip.php",
type: "GET",
data: {db : db, id : url.substring(url.lastIndexOf('=')+1)},
dataType: "JSON"
});
request.done(function(msg){
d3lttFillInTooltip(msg,db)
$('#d3ltttooltipdiv').css('visibility','visible');
});

在运行这个ajax之前,我绝对需要取消同一个ajax的最后一次调用。

欢迎任何帮助:)

2 个答案:

答案 0 :(得分:0)

为每个jqXHR对象使用不同的变量。

答案 1 :(得分:0)

您需要更改代码,这样您才不会为每次调用分配request=$.ajax({...});。您需要某种列表或请求映射。如何实现这取决于您何时需要中止请求。例如,如果您只想拥有一堆请求,以便可以轻松中止最后一个请求,那么您可以执行以下操作:

var requests = [];
requests.push($.ajax({
    // request 1
    ...
}));
requests.push($.ajax({
    // request 2
    ...
}));
requests.push($.ajax({
    // request 3
    ...
}));

requests.pop().abort(); //aborts request 3
// or...
requests.shift().abort(); //aborts request 1

如果这对您没有帮助,请提供有关何时需要中止请求的详细信息。底线 - 如果您希望能够定位特定请求,请不要对您所做的每个ajax请求设置请求。