Ответ 1
Другая модификация:
function update() {
$.get("response.php", function(data) {
$("#some_div").html(data);
window.setTimeout(update, 10000);
});
}
Разница в этом заключается в том, что она ждет 10 секунд ПОСЛЕ того, как вызов ajax один. Так что действительно время между обновлениями составляет 10 секунд + длина вызова ajax. Преимущество этого заключается в том, что если ваш сервер занимает больше 10 секунд, чтобы ответить, вы не получаете двух (и, в конечном счете, многих) одновременных вызовов AJAX.
Кроме того, если сервер не отвечает, он не будет продолжать попытки.
Я использовал аналогичный метод в прошлом, используя .ajax для обработки еще более сложного поведения:
function update() {
$("#notice_div").html('Loading..');
$.ajax({
type: 'GET',
url: 'response.php',
timeout: 2000,
success: function(data) {
$("#some_div").html(data);
$("#notice_div").html('');
window.setTimeout(update, 10000);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$("#notice_div").html('Timeout contacting server..');
window.setTimeout(update, 60000);
}
}
Показывает загрузочное сообщение при загрузке (добавьте анимированный gif для типичного стиля "Web 2.0" ). Если время ожидания сервера (в этом случае занимает больше 2 секунд) или происходит какая-либо другая ошибка, отображается ошибка, и он ждет 60 секунд, прежде чем снова связаться с сервером.
Это может быть особенно полезно при выполнении быстрых обновлений с большим количеством пользователей, где вы не хотите, чтобы каждый внезапно искалечил отстающий сервер запросами, которые все время просто выходят из строя.