1

<div>jQueryを使用してこれを自動的に更新するのに問題があります。これは基本的に、2 秒ごとにページを更新するチャット機能です。私はこれをいくつか試してみましたが、運が悪かったので、完全に別の方法で書き直すことは大歓迎です。

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; ?>
4

3 に答える 3

2

発生するエラーは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か?アプリケーション/コントローラー?

于 2009-02-25T16:20:32.500 に答える
2

すべてが機能するはずです。$.get の URL は「chat_data.php」ではなく「js/chat_data.php」である必要がありますか?

また、とにかくAJAX経由でロードするだけなので、divからphpインクルードを取り出します。

于 2009-02-25T16:11:32.893 に答える
1

いくつかの考えと代替コード例。問題がどこにあるかを判断するのは難しいので、これらはほんの一部のアイデアです。

  • javascriptタイマーを使用して再実行する代わりに、待機をPHPに移動することができます

  • より単純なjQuery.load()メソッドを使用してみてください。

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

PHP側では、

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

効果は似ていますが、少し単純化されています。updateChat()関数は、出力が返されるまで呼び出されません。

まあ、ただのアイデア。それが正しい解決策であるかどうかはわかりませんが、問題を切り分けるのに役立つ可能性があります(jsタイマー変数を取得する)。

于 2009-02-25T16:20:14.793 に答える