我在我的网站上运行以下功能。它作为基本计时器工作,一旦i = 0,它应该像它一样继续执行else语句。然后它通过AJAX GET运行并输出一个数字到$ assetID。我的问题是,这似乎已经运行了两次。当我应该只获得一个时,我收到两个警报。关于我可能做错的任何想法?
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函数之外似乎使其工作原理。不知道为什么在fadeOut函数内部会运行两次。
答案 0 :(得分:0)
计时器块工作正常...尝试过日志......
Timer start...
If block...
Timer start...
If block...
Timer start...
If block...
Timer start...
Else block...
完全符合预期。
尝试替换
complete: function(data){...}
与
success: function(data){...},
error: function(err){...)