Прямая трансляция: не знаю, как сохранить то, что отправлено - PullRequest
2 голосов
/ 09 мая 2011

Сам канал работает, но с интервалами он обновляется, и когда я отправляю что-то, он обновляет страницу и ничего не сохраняется.

jQuery код:

jQuery(document).ready(function() {
    setInterval("showNewStories()", 5000);
});

function showNewStories() {
    $.getJSON("post.php", null, function(data) {
        if (data != null) {
            $("#stories").prepend($("<li><span class=\"story\">" + 
                data.story + "<br /><span class=\"date\">" + data.date + 
                "</span></li>").fadeIn("slow"));
        }
    });}

post.php:

<?php 
echo json_encode(array( "story" => $_POST['dataS'],
                                        "date" => date('l jS \of F Y h:i:s A')));
?>

То, что я хочу знать, это то, как я могу сделать это, как фид Facebook, где вы отправляете что-тоон добавляется в канал, а затем остается там, даже если вы обновляете.

Ответы [ 2 ]

0 голосов
/ 09 мая 2011

Я не эксперт по php, поэтому не могу сказать, делаете ли вы это уже, но код на стороне сервера должен принимать параметр, который сообщит ему, с какой даты загружать сообщения.

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

Затем вызов showNewStories отправит на сервер переменную с последней датой-временем. На сервере, если переменная передается на страницу php, она будет возвращать только сообщений, в которых дата и время публикации больше , чем дата / время публикации.

Затем, когда вы получите ответ от сервера, вы можете добавить сообщения в вашу временную шкалу. Когда вы добавляете последний, вы сохраняете , который date time, как дату, которая будет передана на сервер при следующем вызове showNewStories.

В этой логике есть пробел в том, что если разрешение даты и времени на вашем сервере недостаточно точное, чтобы справиться с частотой количества сообщений, которые он получает, вы можете столкнуться с проблемой, когда сообщение создается на время x, вы извлекаете список до времени x, а затем принимается другой пост во время x. В следующий раз, когда showNewStories сделает звонок на сервер, вы пропустите второй пост, сделанный во время x.

Чтобы сделать это пуленепробиваемым, вы должны изменить логику на сервере так, чтобы она включала в себя любые сообщения, в которых время публикации равно дате, прошедшей внутрь. Вы также возвращали бы уникальный идентификатор для каждого сообщения, возвращенного клиенту .

Затем, на стороне клиента, когда вызывается обратный вызов getJSON, вы должны включить любые элементы, где время отправки сообщения больше, чем время, отправленное на сервер или . дата и время совпадают, а идентификатор записи, возвращенный с сервера, еще не указан в списке (я рекомендую включить идентификатор записи в списке в качестве атрибута данных ).

0 голосов
/ 09 мая 2011

как вы храните данные на сервере?Данные нужно будет где-то хранить, скорее всего, в базе данных, чтобы было легче получить самые последние несколько.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...