少し調べてみましたが、これに対する答えはまだ見つかりません。
ボタンをクリックすると情報がサーバーに送信され、現在の div が非表示になり、読み込み中の gif が読み込まれるという ajax リクエストがあります。サーバーが応答すると、gifのロードが取り除かれ、サーバーからのコンテンツが表示されるように設定しました。
コード:
$("#submit").click(function(e){
e.preventDefault();
var $domain = $.fn.HTTP($('#domain').val());
if(!$.fn.ValidURL($domain)){
$('#domainerror').fadeIn(500);
return false;
}
if($('#domainerror').css('display')!=='none'){
$('#domainerror').fadeOut(350);
}
$('#question').hide(500, function(){
$('#waiting').show(350);
});
$.getJSON('http://localhost/file.php',
{
i: $domain
},
function(data){
$('#answer').html(data.message + $('#trybutton').html());
$('#waiting').hide(350, function(){
$('#answer').show(350);
});
});
});
問題は、jQuery がサーバーからの応答を受信するのが速すぎて、ロード中の gif が消えないことです。
ただし、サーバーに 3 秒間スリープするように指示すると、問題なく動作します。これは私が望む解決策ではありません。
何か案は?