<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 продължава да задейства израз отново и отново, освен ако не го кажете да спре