0

内部 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;
            }
4

2 に答える 2