Как загрузить часть страницы каждые 30 секунд

Возможный дубликат:jQuery Ajax запрос каждые 30 секунд

Я знаю, что мы можем загрузить часть страницы на какое-то событие. Я также знаю, что мы можем загружать всю веб-страницу в указанное время. Но я хотел знать, как загружать часть страницы каждые 30 секунд.

5 ответов

function refreshPage() {
 $.ajax({
 url: 'ajax/test.html',
 dataType: 'html',
 success: function(data) {
 $('.result').html(data);
 },
 complete: function() {
 window.setTimeout(refreshPage, 30000);
 }
 });
}
window.setTimeout(refreshPage, 30000);

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


function load_content(){
 setTimeout(function(){
 $.ajax({
 url: 'ajax/example.html',
 dataType: 'html',
 success: function(data) {
 $('.result').html(data);
 load_content();
 }
 });dataType: 'html',
 },30000);
}
load_content();


jQuery уже имеет встроенную функциональность для замены содержимого элемента удаленным файлом под названием load(). С помощью load() вы можете использовать этот oneliner:

window.setTimeout($('#refresh').load('/remote/content.html'), 30000);

#refresh - это идентификатор обновляемого элемента, /remote/content.html - это удаленный контент.


$(function() {
 setInterval(function() {
 getData(); // call to function
 }, 30000 ); // 30 seconds
});
// define your function here
function getData() {
 var url ="/mypage.php?type=load_data";
 var httpobj = $.ajax({url:url,async:false}); // send request
 var response = httpobj.responseText.trim(); //get response
 $('#myDiv').html(response); // display data
}


Если вы используете jQuery, вы можете использовать метод load()

setInterval(function(){
 $('#some-kinda-container').load('/some/kinda/url.html #bit-you-need');
}, 30000);

licensed under cc by-sa 3.0 with attribution.