0

リクエストしたい URL のリストがあります。応答の処理は、要求を行った URL に基づいてページのさまざまな部分を更新することを除いて同じであるため、要求ごとに同じコールバックを使用したいと考えています。

私の問題は、コールバックが最初のリクエストに対して呼び出され、最初のリクエストの処理が完了する前に 2 番目のリクエストに対して再度呼び出されることです。それはある程度予想されますが、2番目のリクエストが終了すると、最初のリクエストの処理に戻ると思っていました。これは、async が false に設定されていても発生します。明らかに、コールバックが呼び出されると同期部分が停止します。

私が見つけた唯一の解決策は、コールバックで 2 番目の要求を発行することです。より良い方法はありますか?

問題のコードは次のとおりです。

function doStuff() {
   // populate a var urls array with data from user input
   var urls = new Array();
   // ... code to populate urls ...

   // loop through urls and send requests
   for (var i = 0; i < urls.length; i++) {
       $.ajax({url: urls[i],
               success: handleResponse,
               dataType:'html'});
   }
}

function handleResponse(data) {   
    url = this.url;
    // process based on url
}
4

1 に答える 1

0

jQuery Deferred はあなたの場合に役立ちます

于 2012-11-06T05:02:01.127 に答える