3秒ごとAJAX POSTリクエストを作成してプロセスのステータスを取得します。これは素晴らしいです。プロセスがページに新しい要素を追加する(下記)の100%コールバック関数が実行に達し、それが連続して3秒ごとに進捗状況を取得するために使用するsetTimeoutメソッドをキャンセルこのJSコードは期待通りに機能しますか?
。しかし、私はユーザーから、時にはキャンセルに失敗し、新しい要素がページに追加されず、「100%」と表示されていたと言われています。
私は何度も何度もこれをテストしてきたし、それは私のために立ち往生れることは決してありません。コードもOKですが、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コードは期待通りに機能しますか?" - それはあなたが期待したものに依存すると思います。 – EBGreen
毎回完璧に動作します。 1人または2人のユーザーが「100%」で立ち往生し、「完了」という要素を表示していないと言っています。 – Abs