内部 Web ベースのツールを開発しています
その中で、配列値に基づいて ajax 呼び出しのシーケンスを生成する必要があります。以前は同期で作っていたのですが、そうするとブラウザがブロックされてしまい、ajax中に読み込み中の画像を表示することができません。
したがって、呼び出しを非同期として変更しました。今度は ajax 呼び出しが一気に進み、応答は UI と同じですが、firebug で確認すると応答は明確です。ループ内にアラートを配置すると、正常に機能します。
さらに参照するためにコードを投稿しました
// calling the function within loop
$.each(texts, function (tind, tval) {
setTimeout(function () {
txtcmpare(tval, search_logo, ask_logo, option_logo);
},2000);
});
//the function which calls ajax (txtcmpare)
function txtcmpare(actval, sl, al, ol) {
var tch_locale = new Array();
var tch_tempname = new Array();
if (actval != "==" && actval != "") {
avail = 0;
tparam = actval;
//respout = findloacle(param);
setTimeout(function () {
findloacle(tparam, function (y) {
// my operations
});
},2000);
}
if I put some alert here, sometimes response are clear
}
//the ajax function
function findloacle(locparam,callback) {
//var loc = new Array();
$.ajax({
type: "POST",
url: "Services/Locale.asmx/ajaxresp",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ queryparam: locparam }),
dataType: "json",
cache: false,
success: function (data) {
//loc = result.d;
callback(data);
},
error: function () {
alert("error");
}
});
//return loc;
}