これを達成するために少し時間を費やし、Firefox で非常にうまく機能すると思われる解決策を見つけましたが、IE でテストしたときに、async: false を使用するとブラウザーがロックされる (応答が停止し、フリーズしたように見える) ことがわかりました。通話時間。
要件は基本的に次のとおりです。ユーザーがチェックできる一連のチェックボックスを提供します。特定の時点で、要求されたデータを取得して、サービスに要求を次々に送信するために使用される関数「selectedSeriesData()」を呼び出します。メソッドの実行中にステータス メッセージと警告をブラウザに出力できるように、sync を使用することにしました。
例えば。「データ 1/3 の読み込み」、「データ 2/3 の読み込み」、「データ 3/3 の読み込み」
もちろん、これにより特定のブラウザーがロックされることがわかったので、IE でのエクスペリエンスはブラウザーをロックするだけでなく、表示しようとしたメッセージも表示されませんでした。各 ajax 呼び出しが行われた後に呼び出すことができるアクションのような単純な doEvents はありますか、それとも ajax 呼び出しを再構築するだけの問題ですか。その場合、私の要件を考慮した実装のアドバイスはありますか?
以下は、参照用のコードの簡単な抜粋です。
function selectedSeriesData() {
var seriesData = [];
var index = 0;
$.each($("input[name='idCheckBox']:checked"), function () {
var id = $(this).val();
$("#loadingMessage").text("Loading " + id + "...");
$.ajax({
type: 'POST',
async: false,
url: '<%: loadSeriesDataPath %>',
dataType: 'json',
data: {
Id: id
},
success: function (data) {
seriesData[index] = data;
index++;
},
error: function (xhr, ajaxOptions, error) {
$("#warnings ul").append('<li>A communication error occured while attempting to load data for the series.</li>');
}
});
}
});
return seriesData;
}