Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   setInterval срабатывает слишком часто (https://javascript.ru/forum/misc/67907-setinterval-srabatyvaet-slishkom-chasto.html)

novichok2017 14.03.2017 17:17

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");

Dilettante_Pro 14.03.2017 18:34

novichok2017,
Не поленился, проверил ваш пример - выдает очередной результат через 10 сек, как и задано. Проверял в Хроме и в ИЕ11

exec 14.03.2017 18:45

Вложений: 1
Да уж, загадка.
Я тоже проверил, всё отрабатывает с интервалом почти ровно 10с.

novichok2017 15.03.2017 16:09

Спасибо большое за ответы! Но у меня так и не работало, ни в хроме, ни в мозиле. Переписала немного, теперь работает. Но хотелось бы конечно понять, почему у меня не работал тот вариант, а у вас работал...

function tabl()
		{
			$.ajax({
				url: "testsourse.php",
				cache: false,
				success: function(html){
					$("#content").html(html);
				}
			});
		}

		
		        setInterval(tabl, 10000);



Уважаемый exec, подскажите пожалуйста, что за инструмент который показывает время выполнения круга? мне бы очень пригодился для обучения.

Dilettante_Pro 15.03.2017 16:50

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)

exec 16.03.2017 03:03

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>

novichok2017 16.03.2017 09:23

exec,
Спасибо большое!

novichok2017 16.03.2017 09:45

Dilettante_Pro, Спасибо. Ваш вариант заработал, сейчас буду сравнивать, хотя на первый взгляд у меня также...


Часовой пояс GMT +3, время: 01:11.