Начнем с примера классического AJAX запроса на получение данных.
Код: Выделить всё
var timeout = 5000;
function refreshData(){
$.ajax({
url:'/ajax.php',
type:'post',
data:{},
dataType: 'text',
success: function(data){
// Делаем обработку data
setTimeout(function(){refreshDate()},timeout);
}
});
}
$(function(){
refreshData();
})
А теперь взглянем с другой стороны. А что если это время ожидание будет не у пользователя, а на сервере? Можно ли отдавать данные по мере поступления? Оказывается можно.
Пример серверной части:
Код: Выделить всё
<?php
// Инициализация пользователя, загрузка других файлов
$sleep = isset($_POST['time'])?$_POST['time']:25;
$timeend = time()+$sleep;
$content = array()
while(time()<$timeend && empty($content)){
// Делаем любые запросы, которые повторяются каждую секунду. Если запрос вернул результат, заносим его в $content
if(!empty($content)) sleep(1);
}
echo json_encode($content);
Модернизируем часть на ява-скрипте.
Код: Выделить всё
var pt = 25; // Время работы скрипта можно регулировать и отсюда :)
function refreshDate(){
$.ajax({
url:'/ajax.php',
type:'post',
data:{time:pt},
dataType: 'text',
timeout:30,
success: function(data){
// Делаем обработку data
refreshDate(); // Сразу же посылаем еще один запрос!
}
});
}
$(function(){
setTimeout(function(){refreshDate()},2000) // первый запуск через 2 секунды после загрузки DOM
})
Ссылка на статью: http://citylive.ru/blog/webcoders/210.html