次のような状況があります。ループ内で同期化されたAjaxリクエストを作成し、各繰り返しの後にdiv要素に返す必要があります。下)。各要求の応答時間は異なる場合がありますが、表示する順序は発行された順序と同じでなければなりません。ここでは3つのリクエストを持つ例を示します。リクエスト "A"は3秒、 "B"は1秒、 "C"は5秒が必要です。結果を表示する順序は、要求が発行されたときA、B、Cですが、使用するコードはB、A、Cの結果を示します。ループ内のJQueryで同期化されたAjaxリクエスト
ここにコード(JQuery Ajaxリクエスト)があります:
$(document).ready(function(){
var json = document.getElementById("hCategories").value;
var categories = eval('(' + json + ')');
for(curCat in categories) {
curCatKey = categories[curCat]['grKey'];
$.ajax({
type: "POST",
url: "get_results.php",
data: "category=" + escape(curCatKey) +
"&search=" + escape($("#hQuery").val()),
timeout: 8000,
async: false,
success: function(data) {
$("#content").append(data);
}
});
});
"async:false"で動作すると思っていましたが、すべてのAjax呼び出しが終了してループの後に結果が表示されるまで待機します。私は皆さんの中には、いくつかの異なる解決法を指摘できることを願っています。事前に
おかげで、 乾杯クリス
EDIT:すべての可能な解決策のおかげで、私は今、一つずつこれらを試してみて、私の問題に合うものに戻ってくるだろう。
私はコールバックを使用することはできませんか後でIDを介してそれらをソートできませんか? AJAXはもちろん**非同期** JavaScriptとXMLです。 – Smamatti
あなたの結果を待っている間、UIを** 8秒**フリーズしようとしていますか?あなたは深刻なことはできません。 –