【发布时间】:2009-03-04 19:47:34
【问题描述】:
我每 3 秒发出一次 AJAX POST 请求以获取进程的状态。这很好用。
当进程达到 100% 时,将执行回调函数(如下所示)以向页面添加新元素,然后取消用于每 3 秒连续获取进度的 setTimeout 方法。但是,我的用户告诉我,它有时无法取消,并且新元素没有添加到页面中,而且我一直卡在显示“100%”。
我一次又一次地对此进行了测试,但它从来没有卡住过。代码看起来也不错,但是我的 JavaScript 技能不是很好,所以我希望有人能指出是否有可能发生这个问题?
我已经评论了代码,很抱歉它很长。我已经尝试减少它。
function convertNow(validURL){
startTime = setTimeout('getStatus();', 6000);
//AJAX CALL TO RUN PROCESS
$.ajax({
type: "GET",
url: "main.php",
data: 'url=' + validURL + '&filename=' + fileNameTxt,
success: function(msg){
//ON SUCCESS CLEAR SETTIMEOUT AND SHOW ELEMENTS (text)
clearTimeout(continueTime);
clearTimeout(startTime);
$("#loading").hide("slow");
$("#done").html("Done");
}//function
});//ajax
}//function convertNow
function getStatus(){
//AJAX CALL TO GET STATUS OF PROCESS
$.ajax({
type: "POST",
url: "fileReader.php",
data: 'textFile=' + fileNameTxt,
success: function(respomse){
textFileResponse = respomse.split(" ");
$("#done").html("Processing...");
}
});//ajax
clearTimeout(continueTime);
if(textFileResponse[0]=='100.0%'){
clearTimeout(continueTime);
}
else{
clearTimeout(startTime);
continueTime = setTimeout('getStatus();', 3000);
}
}
【问题讨论】:
-
"此 JS 代码是否按预期工作?" - 我想这取决于你的预期。
-
它每次都非常适合我。只是一两个用户说它卡在“100%”并且没有显示“完成”元素。
标签: javascript settimeout