0

我的问题可能是nooby,但实际上我真的找不到答案。

我想在特定的 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 的最后一次调用。

欢迎任何帮助:)

4

2 回答 2

0

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

于 2012-05-03T22:08:27.473 回答
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 请求。

于 2012-05-03T22:20:22.220 回答