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

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

Мне кажется, что существует около двух вариантов: поместить HTML-файл "new items" в файл PHP, который вызывается ajax, и добавить его к элементу, содержащему фид статуса. (это также противоречит цели JSON)

или

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

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

Ответы [ 4 ]

1 голос
/ 16 декабря 2009

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

1 голос
/ 16 декабря 2009

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

$(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);
});
1 голос
/ 16 декабря 2009

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

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

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

Только мои $ 0,02

0 голосов
/ 16 декабря 2009

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

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

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

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 в конце концов, но это идея.

...