Jquery ajax调用超时。

时间:2012-09-13 16:54:16

标签: javascript ajax jquery

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

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

}

如果超时并执行完整的功能,你可以帮我解决如何中止ajax调用。

Lemme知道我是不是很清楚。 感谢

2 个答案:

答案 0 :(得分:2)

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

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

$.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); 
  }
});

请参阅the documentation for $.ajax here,因为它对该功能有很好的解释。

答案 1 :(得分: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;
}