私がやろうとしているのはdivに読み込み中のイメージを追加することです(ユーザーが何かを読み込んでいることを知っている)ので、jquery ajax関数を呼び出します。これは "async:false"に設定されています。(同期)Ajax中にブラウザのロックを停止しますか?
$jQuery("#playersListDiv").html(loadingImage);
$jQuery.ajax({
type: "POST", /* this goesn't work with GET */
url: urlValue, /*ex: "NBAgetGamesList.php" */
data: parameters, /*ex: "param1=hello" */
cache: false,
async: false,
success: function(data){
}
});
問題はそのブラウザがロックされ、AJAX呼び出しはもちろん無用である行われた後までロード画像を追加していません。ここに私のコードです。 Firefoxは実際に読み込み中の画像を追加する唯一のブラウザです。 IE、Chrome、Safariは読み込み中の画像を追加しません。
asyncがfalseに設定されているため、ブラウザのロックが発生することがわかりましたが、返されたデータが必要なため、この要求が完了するまで待つ必要があるため、これが唯一のオプションです。
これを回避する手段はありますか?私は、私は私が私は毎回ポップアップ警告を欲しくない読み込みイメージを追加した後に警告を配置する場合。
同期は、定義上、「ブロッキング」です。どのようにブラウザに影響するかはさまざまですが、通常はDOMの更新と対話をブロックします。問題を「修正」するために非同期にします。 –
これを非同期にして、コードを別の関数で実行するのはなぜでしょうか。次に、リターンコードで関数を呼び出しますか? – Bob
"返されたデータが必要なためです。"それがコールバックの目的です。あなたのコードは線形である必要はありません。 – epascarello