1

HTMLコンテンツを取得するための一連のURLへのajax呼び出しがあります。しかし、一部の URL はコンテンツを取得するのに時間がかかります。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); 
  }
});

関数のかなり良い説明があるので、hereのドキュメントを$.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 に答える