2015-10-06 2 views
2

У меня есть задача предоставить пользователям статус бэкэнд-процесса, который выполняется в нашем приложении. Для отображения этого статуса мы создали таблицу состояния в базе данных, где перечислены задачи, которые завершили, не удались, или находятся в стадии реализации, например, так:Обновление таблицы через AJAX

enter image description here

Чтобы получить наиболее текущее состояние этой таблицы, Я вызываю метод .ajax() каждые 3 секунды, завершая вызов в методе setInterval(). Обновление работает так, как ожидалось, и захватывает самый последний статус программы, однако это был мой первый подход к проблеме и немного переборчивый. Мне интересно, существует ли лучший способ для достижения этого (т. Е. Кросс-браузерное решение, которое имитирует живой канал новостей с его собственным API). Есть предположения?

+1

Эта статья объясняет, гораздо лучше, чем я мог когда-либо объяснить http://techoctave.com/c7/posts/60-simple-long- polling-example-with-javascript-and-jquery/ – NullHappens

+0

Это было отличное чтение, спасибо –

ответ

1

Попробуйте http://www.w3schools.com/html/html5_serversentevents.asp

сс это лучший способ сделать это.

Попробуйте этот код

<script> 
if(typeof(EventSource) !== "undefined") { 
var source = new EventSource("demo_sse.php"); 
source.onmessage = function(event) { 
    //display data in event array. 
}; 
} else { 
//Use your old interval if SSE not support in browser 
} 
</script> 

в коде PHP

<?php 
header('Content-Type: text/event-stream'); 
header('Cache-Control: no-cache');//this is important 

$arr=['status'=>1,'data'=>$some_array]; 

$retry="retry: 10000\n"; 
echo $.retry."data: ".json_encode($arr)."\n\n"; 
flush(); 
?> 

вам нужно добавить «данные:» в начале вы показываете на SSE знать, что ваши данные и «\ п \ n "конец данных.

и добавить повторную попытку, так что обновляется каждые 10000 = 10 секунд

+0

Это было бы хорошим решением, если бы оно поддерживало IE –

+1

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

+0

Сегодня никто не использует IE. –

Смежные вопросы