<meta http-equiv="Refresh" Content="5">
Этот скрипт перезагружает или обновляет страницу каждые 5 секунд. Но я хочу сделать это с помощью вызова jQuery и AJAX. Является ли это возможным?
Как указывали другие, setInterval и setTimeout сделают трюк. Я хотел бы выделить более продвинутую технику, которую я узнал из этого превосходного видео Пола Айриша: http://paulirish.com/2010/10-things-i-learned-from-the-jquery-source/
Для периодических задач, которые могут занять больше времени, чем интервал повторения (например, HTTP-запрос при медленном соединении), лучше не использовать setInterval()
. Если первый запрос не был выполнен, а вы запускаете другой, вы можете оказаться в ситуации, когда у вас есть несколько запросов, которые потребляют общие ресурсы и истощают друг друга. Вы можете избежать этой проблемы, дождавшись выполнения следующего запроса, пока не будет выполнен последний:
// Use a named immediately-invoked function expression.
(function worker() {
$.get('ajax/test.html', function(data) {
// Now that we've completed the request schedule the next one.
$('.result').html(data);
setTimeout(worker, 5000);
});
})();
Для простоты я использовал обратный вызов успеха для планирования. Обратной стороной является то, что один неудачный запрос остановит обновления. Чтобы избежать этого, вы можете вместо этого использовать полный обратный вызов:
(function worker() {
$.ajax({
url: 'ajax/test.html',
success: function(data) {
$('.result').html(data);
},
complete: function() {
// Schedule the next request when the current one's complete
setTimeout(worker, 5000);
}
});
})();
Да, вы можете использовать
setTimeout()
метод илиsetInterval()
метод JavaScript для вызова кода, который вы хотите запустить. Вот как это можно сделать с помощью setTimeout:источник
Вы можете использовать
setTimeout
илиsetInterval
.Разница в том, что setTimeout запускает вашу функцию только один раз, а затем вы должны установить ее снова. setInterval продолжает запускать выражение снова и снова, если вы не прикажете ему остановиться
источник
Я попробовал приведенный ниже код,
Это не работало должным образом в течение указанного интервала, страница не загружалась полностью, и функция вызывалась постоянно. Лучше вызывать
setTimeout(executeQuery, 5000);
снаружиexecuteQuery()
в отдельной функции, как показано ниже,Это сработало именно так, как задумано.
источник