2015-05-19 51 views
-1

setIterval函數在I.E上不起作用。 10.我有一個網頁,當表單被提交時,它會在服務器上觸發一個用於下載文件的漫長過程。我使用setInterval重複輪詢服務器的進度,以便用戶獲得某種進度更新。IE10上的setInterval

ProgressServlet只會被調用一次。我沒有在另一個網絡瀏覽器上測試它,因爲在我的公司使用其他瀏覽器是「非法」的。

<script> 
 

 
var myVar; 
 

 
function validateForm() 
 
{ 
 
\t //validation logic omitted 
 
     myVar = setInterval(getProgress(), 1000); 
 
\t return true; \t 
 
} \t \t \t 
 

 

 
function getProgress() { 
 
\t //ProgressServelt will return progress of the long process on the server 
 
\t $.get("ProgressServlet", $.now(), function(res) { 
 
\t \t if (res != "9999" || res == "No value avaliable") { 
 
\t \t \t $("#progress").html(res); 
 

 
\t \t } else { 
 
\t \t \t $("#progress").html("Stopped: " + res); 
 
\t \t \t clearInterval(myVar); 
 
\t \t } 
 
\t }); 
 
\t \t 
 
} 
 

 
</script>
<form method="post" action="CreateServlet" name = "create"> 
 

 
Change Number(s):<br> 
 
<input type="text" name="change" id="change"> 
 
<p></p> 
 
<input type="submit" value="Download" onClick="return validateForm()"> 
 

 
</form> 
 
<p></p> 
 
<button id="send" name="send">Display</button>

+0

獲取緩存,所以希望你設置正確的沒有緩存標題 – epascarello

+0

重複的[爲什麼我的函數調用,應該安排立即執行setTimeout?](http://stackoverflow.com/questions/2037203/why-is- my-function-call-that-should-be-scheduled-by-settimeout-executed-immediat) – apsillers

回答

3

變化

myVar = setInterval(getProgress(), 1000); 

myVar = setInterval(getProgress, 1000); 

即:傳遞給函數的,而不是返回。

+0

是的,就是這麼簡單。 (我真的不擅長JavaScript)。感謝您的即時迴應。 –