setInterval срабатывает слишком часто
Уважаемые знатоки, подскажите пожалуйста!
Использую setInterval для динамической загрузки информации. Но почему-то вне зависимости от того, какой интервал я ставлю, функция срабатывает раз в секунду. Если, например, выводить алерт вместо подгрузки файла - интервал устанавливается правильно. function tabl() { $.ajax({ url: "testsourse.php", cache: false, success: function(html){ $("#content").html(html); } }); } $(document).ready(function(){ setInterval(tabl,10000); }); testsourse.php - сделала просто вывод времени echo date("h:i:s"); |
novichok2017,
Не поленился, проверил ваш пример - выдает очередной результат через 10 сек, как и задано. Проверял в Хроме и в ИЕ11 |
Вложений: 1
Да уж, загадка.
Я тоже проверил, всё отрабатывает с интервалом почти ровно 10с. |
Спасибо большое за ответы! Но у меня так и не работало, ни в хроме, ни в мозиле. Переписала немного, теперь работает. Но хотелось бы конечно понять, почему у меня не работал тот вариант, а у вас работал...
function tabl() { $.ajax({ url: "testsourse.php", cache: false, success: function(html){ $("#content").html(html); } }); } setInterval(tabl, 10000); Уважаемый exec, подскажите пожалуйста, что за инструмент который показывает время выполнения круга? мне бы очень пригодился для обучения. |
novichok2017,
Действительно, очень странно. Вот мой тестовый вариант в полном виде: <!DOCTYPE html> <html > <head> <title>Untitled Page</title> <script src='http://code.jquery.com/jquery-latest.js'></script> <script> function tabl() { $.ajax({ url: "testsourse.php", cache: false, success: function (html) { $("#content").html(html); } }); } $(document).ready(function () { setInterval(tabl, 10000); }); </script> </head> <body> <div id='content'></div> </body> </html> и файл testsourse.php содержит <?php echo date("h:i:s"); ?> - и все нормально работает (пробовал и с другими версиями jQuery) |
novichok2017, просто засекаете время старта и вычисляете разницу с текущим временем:
<div id="timer"></div> <script> var start = +new Date(); setInterval(update, 1000 * Math.random()); function update() { document.getElementById("timer").innerHTML += "<div>time passed: " + ((+new Date() - start) / 1000) + "sec</div>"; } </script> |
exec,
Спасибо большое! |
Dilettante_Pro, Спасибо. Ваш вариант заработал, сейчас буду сравнивать, хотя на первый взгляд у меня также...
|
Часовой пояс GMT +3, время: 01:11. |