1

我对一组 url 进行了 ajax 调用以获取 html 内容。但是有些网址需要很长时间才能获取内容,我可以跳过那些花费超过 1 秒的网址。

    for (url in list) {
    $.ajax({
        'url': url,
        type: 'get',
        timeout: 1000,
        success: function () {
            //doSomething
        },
        complete: function () {
            //what to write?
        }
    });

}

如果超时并执行完整的功能,你能帮我如何中止ajax调用吗?

让我知道我是否不清楚。谢谢

4

2 回答 2

2

首先,更改$.ajax(function() {$.ajax({,因为您尝试使用的参数是一个对象,而不是一个函数。

由于您在选项对象中指定了超时,因此如果页面没有及时响应,error只要您指定一个,ajax 方法就会告诉您的函数。

$.ajax({
  'url': yourUrlHere,
  success: function(){ /*do stuff*/ },
  timeout: 1000,
  error: function(xhr, status, err){ 
    //status === 'timeout' if it took too long.
    //handle that however you want.
    console.log(status,err); 
  }
});

请参阅此处的文档$.ajax,因为它对该功能有很好的解释。

于 2012-09-13T17:05:25.860 回答
0

如果发生这种情况,您可以中止请求并继续下一个..

var ajaxRequests = null;
for(url in list){
    var newRequest = $.ajax({
    type: 'GET',
    url: url,
    data: '{}',
    dataType: 'json',
    beforeSend: function() {
        var r = ajaxRequest;
        if (r != null && r != undefined) {
            r.abort();
        }
    },
    success: function(result) {
        // what has to be done if the ajax request comes through
    },
    complete: function() {
        ajaxRequests = null;
    }
    ajaxReqs = newRequest;
}
于 2012-09-13T17:06:48.067 回答