2015-05-19 2 views
-1

Функция setInterval не работает на I.E. 10. У меня есть веб-страница, когда при отправке формы она запускает длительный процесс на сервере для загрузки файла. Я использую setInterval для повторного опроса сервера для достижения прогресса, чтобы пользователь получил какое-то обновление прогресса.setInterval on IE10

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-schedule-by-settimeout-execute-immediatelyiat) – apsillers

ответ

3

Изменить

myVar = setInterval(getProgress(), 1000); 

в

myVar = setInterval(getProgress, 1000); 

То есть: передать функции, а не то, что она возвращает.

+0

Да, это так просто. (Я не очень хорошо разбираюсь в javascript). Спасибо за немедленный ответ. –

Смежные вопросы