私は自分のウェブサイトで次の機能を実行しています。これは基本的なタイマーとして機能し、i = 0 になると、else ステートメントに進む必要があります。次に、AJAX GET を実行し、単一の数値を $assetID に出力します。私の問題は、これが 2 回実行されているように見えることです。アラートが 1 つしか届かないはずなのに、アラートが 2 つ届きます。私が間違っているかもしれないことについて何か考えはありますか?
var i = 3;
function timer() {
if (i <= 3 && i > 0) {
$('#count').fadeIn();
$('#count').attr('src', 'images/'+i+'.png');
setTimeout(timer, 1000);
i--;
} else {
//var intProcessingTimeout = 0;
$.ajax({
type: "GET",
url: "index_ajax.php",
data: "action=submit_info",
complete: function(data){
//console.log(data);
i = 3;
$assetID = data.responseText.replace(/ /g,'');
//$assetID = $.trim($(this).text());
alert($assetID);
$('#get-ready, #count, #swf_file, #back').fadeOut('slow', function() {
$('#preview-poster').fadeIn();
$('.your_poster').fadeIn();
checkAssetStatusNew();
});
}
});
}
}
timer()
ここで呼び出されています:
$(".take_photo").click(function () {
$('#preview-page, #back').fadeOut('slow', function() {
$('#get-ready').fadeIn();
$('#swf_file').fadeIn();
//setTimeout(timer, 1000); //DOESNT WORK HERE - RUNS TWICE
});
setTimeout(timer, 1000); // WORKS HERE FOR SOME REASON
});
編集:setTimeout(timer, 1000);
fadeOut関数の外側を移動すると、本来の方法で機能するようです。フェードアウト関数内で 2 回実行される理由がわかりません。