/ / Как да изстреляте AJAX заявка Периодично? - jquery, ajax

Как да направите повторно заявка за AJAX? - jquery, ajax

<meta http-equiv="Refresh" Content="5">

Този скрипт презарежда или обновява страницата на всеки 5 секунди. Но аз искам да го направя, използвайки jQuery и AJAX повикване. Възможно ли е?

Отговори:

254 за отговор № 1

Както други са посочили setInterval и setTimeout ще свърши работа. Исках да подчертая малко по-напреднала техника, която научих от това отлично видео от Paul Irish: 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);
}
});
})();

27 за отговор № 2

Да, можете да използвате JavaScript setTimeout() метод или setInterval() метод, за да извикате кода, който искате да изпълните. Ето как можете да го направите с setTimeout:

function executeQuery() {
$.ajax({
url: "url/path/here",
success: function(data) {
// do something with the return value here if you like
}
});
setTimeout(executeQuery, 5000); // you could choose not to continue on failure...
}

$(document).ready(function() {
// run the first time; all subsequent calls will take care of themselves
setTimeout(executeQuery, 5000);
});

3 за отговор № 3

Можеш да използваш setTimeout или setInterval.

Разликата е - setTimeout задейства вашата функция само веднъж и след това трябва да го настроите отново. setInterval продължава да задейства израз отново и отново, освен ако не го кажете да спре