Как я могу создать список/канал базы данных, который можно обновлять с помощью jQuery ajax?

Я хочу знать, как лучше всего создать список, скажем, статусов пользователей (аналогично тому, что есть в facebook/twitter), который загружается с помощью PHP при загрузке страницы. Но ajax проверяет наличие новых обновлений статуса каждые 10 секунд или около того.

Мне кажется, что есть около 2 вариантов: поместить html «новые элементы» в файл PHP, который вызывается ajax, и добавить его к элементу, содержащему канал статуса. (это также противоречит цели JSON)

or

используйте что-то вроде jTemplates. но, насколько я вижу, этот вариант не был бы идеальным, потому что при первой загрузке страницы он должен выполнить запрос ajax post/get.

Как все остальные делают свое? Я хочу делать все наилучшим образом, самым «профессиональным» способом!


person Adam    schedule 15.12.2009    source источник
comment
Когда вы говорите о статусе пользователей, вы говорите о текущем пользователе или о нескольких пользователях?   -  person czarchaic    schedule 16.12.2009
comment
Несколько пользователей, извините. ссылаясь на что-то вроде facebook/twitter.   -  person Adam    schedule 16.12.2009


Ответы (4)


Я бы использовал что-то вроде этого:

$(function() {
    var updateStatus = function() {
        var options = {
            url: "some/address/that/returns/JSON",
            dataType: "json",
            success: function(data, textStatus) {
                // use JSON to update you're markup...
                setTimeout(updateStatus, 10);
            }
        };
        $.ajax(options);
    };
    setTimeout(updateStatus, 10);
});
person Drew Wills    schedule 15.12.2009

Кажется, что вы пересекаете границу ответственности. Вы хотите, чтобы PHP отвечал за рендеринг HTML? Или вы хотите, чтобы javascript/json отвечал?

Поскольку вы хотите динамически обновлять список, я бы использовал библиотеку javascript, например jQuery, для выполнения запроса ajax и обработки json, а затем добавьте новые элементы в список. Учебники для этого есть во всей сети.

Это также поможет контролировать ваше здравомыслие, потому что, когда вам нужно отлаживать (а вам придется отлаживать), вам нужно работать только с одним набором кода, используя одну парадигму: подход javascript/json, а не мысленно переключаться между Сторона PHP/HTML и javascript/json.

Просто мои 0,02 доллара

person rossipedia    schedule 15.12.2009

Используйте APE Ajax Push Engine, он написан специально для этой работы. Посмотрите эту Twitter демонстрацию, чтобы увидеть ее в действии.

person Tom    schedule 15.12.2009

Я скажу, что вы можете загрузить содержимое в DIV при загрузке страницы.

Неважно, заполняете ли вы с помощью PHP или javascript, чтобы сделать это при загрузке страницы.

Затем, используя какой-то сценарий сна javascript, автоматически каждые XX секунд перезагружайте html DIV через jQuery с содержимым страницы PHP, которая собирает информацию о статусах пользователей. Поместите функцию загрузки пользовательских статусов в бесконечный цикл с приостановкой функции сна перед обновлениями.

http://www.geekpedia.com/KB55_How-do-I-make-a-JavaScript-function-wait-before-executing-%28sleep-or-delay%29.html

Я предполагаю, что псевдокод jquery пойдет.

$.get("user_statuses.php", function(data){
  $("div").html(data); // replace the data in the div with user_statuses.php
  sleep(15 seconds); // sleep until next 
});

Думаю, сделать это рекурсивным вызовом. Не знаю, выйдет ли javascript в конце концов из строя, но это идея.

person mmundiff    schedule 15.12.2009