Javascript не может получать push-уведомления из базы данных, поэтому приведенный вами пример верен.
Однако вы можете опрашивать сервер на предмет изменений, возвращая Javascript через AJAX некоторое значение, которое сообщает вам, изменились ли данные, а затем запускаете запрос AJAX, который обновляет часть страницы, отображающую эти результаты.
В любом случае, вы должны опросить сервер на предмет изменений с помощью вызова setInterval()
. Существуют способы включить потоковую передачу HTTP, но это немного выше и выше уровня этого вопроса.
РЕДАКТИРОВАТЬ : Для краткости напишу пример в jQuery:
var getCurrentDate = function() {
return (new Date()).toUTCString();
};
var lastPing = getCurrentDate();
setInterval(function() {
$.post(
'/service/getNewData',
{ from: lastPing },
function(data) {
// set the timestamp for the next request
lastPing = getCurrentDate();
// assuming the server returns a JSON array of rows
$('body').append('<p>Last inserted ID: ' + data[data.length - 1].ID + '</p>');
// you could run a for loop here for each row in data
for(var i = 0; i < data.length; i++) {
// ....
}
}
);
}, 5000);
Этот код запрашивает URL /service/getNewData
и отправляет строку UTC, когда в последний раз был отправлен запрос; это позволяет службе находить строки с временными метками, превышающими временную метку UTC, отправленную вызовом AJAX. Все, что вам нужно, это отправить строки обратно в виде правильной строки JSON с правильными заголовками HTTP, и все готово.
См. json_encode () .