2012-09-13 49 views
1

我有一个Ajax调用一组网址来获取html内容。但是,有些网址需要很长时间才能获得内容,我可以跳过那些需要超过1秒的内容。Jquery ajax调用超时。

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

} 

你能帮助我在如何,如果超时终止Ajax调用和执行完整的功能。

让我知道我不清楚。 谢谢

回答

2

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

由于您在选项对象中指定了超时,如果页面没有及时响应,只要您指定一个,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,因为它对函数有很好的解释。

+0

我越来越在状态“错误”而不是“超时”。 – UmaShankar

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; 
}