jQuery: автоматическое обновление `<div>` - PullRequest
1 голос
/ 25 февраля 2009

У меня проблемы с получением <div> для автоматического обновления с помощью jQuery. По сути, это функция чата, которая обновляет страницу каждые две секунды. Я попробовал несколько вариантов этого безуспешно, так что полностью переписать его иначе приветствуется.

JQuery код :

function updateChat() {
    $.get("chat_data.php", function(data) {
        $("div#chattable").html(data);
    });

    window.setTimeout("updateChat();", 2000);
}

$(document).ready(function() {
    updateChat();
});

Вот код <div>, который получает данные от chat_data.php. Это должно быть обновление:

<div id="chattable">
    <?php include("js/chat_data.php"); ?>
</div>

chat_data.php

<?php foreach($query->result() as $row):
    echo "<div class='chatrow'>";
    echo "<div class='chattime'>".date("[M.d] g:ia",strtotime($row->time))."</div>";
    echo "<div class='chatnamematch'>[".$row->name."]</div>";
    echo "<div class='chatbody'>".$row->body."</div>";
    echo "</div>";
endforeach; ?>

Ответы [ 3 ]

2 голосов
/ 25 февраля 2009

Полученная вами ошибка Call to a member function result() on a non-object in /var/www/js/chat_data.php on line 1 означает, что переменная $query установлена ​​неправильно. Вы сказали, что используете CodeIgniter, так в какой папке находится файл ajax_data.php? Применение / контроллеры?

2 голосов
/ 25 февраля 2009

Все выглядит так, как будто должно работать. Должен ли URL-адрес в $ .get быть «js / chat_data.php» вместо «chat_data.php»?

Также я бы взял php include из div, потому что он все равно будет загружаться через AJAX.

1 голос
/ 25 февраля 2009

Пара мыслей и пример альтернативного кода. Трудно сказать, где ваша проблема, поэтому это всего лишь несколько идей.

  • Вы можете переместить ожидание на свой PHP вместо использования таймера JavaScript для повторного выполнения

  • Попробуйте использовать более простой метод jQuery.load ().

    function updateChat() {
    
     $("#chattable").load("chat_data.php", function() { updateChat(); });
    
    }
    

На стороне PHP,

  sleep(2); // sleep for two seconds before returning output

Эффект аналогичен, но немного упрощает. Функция updateChat () не вызывается до тех пор, пока не будет возвращен вывод.

Ну, просто идея. Не уверен, что это правильное решение, но оно может помочь вам изолировать ваши проблемы (исключая переменную js timer).

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