簡體   English   中英

jQuery:自動刷新一個`<div> `</div><div id="text_translate"><p> 我無法讓這個&lt;div&gt;使用 jQuery 自動更新。 它本質上是一個聊天功能,每兩秒刷新一次頁面。 我已經嘗試了幾種變體,但都沒有運氣,所以完全改寫它是非常受歡迎的。</p><p> <strong>jQuery 代碼</strong>:</p><pre> function updateChat() { $.get("chat_data.php", function(data) { $("div#chattable").html(data); }); window.setTimeout("updateChat();", 2000); } $(document).ready(function() { updateChat(); });</pre><p> 這是&lt;div&gt;代碼,它從chat_data.php獲取數據。 這應該是更新:</p><pre> &lt;div id="chattable"&gt; &lt;?php include("js/chat_data.php"); ?&gt; &lt;/div&gt;</pre><p> <strong>聊天數據.php</strong> :</p><pre> &lt;?php foreach($query-&gt;result() as $row): echo "&lt;div class='chatrow'&gt;"; echo "&lt;div class='chattime'&gt;".date("[Md] g:ia",strtotime($row-&gt;time))."&lt;/div&gt;"; echo "&lt;div class='chatnamematch'&gt;[".$row-&gt;name."]&lt;/div&gt;"; echo "&lt;div class='chatbody'&gt;".$row-&gt;body."&lt;/div&gt;"; echo "&lt;/div&gt;"; endforeach; ?&gt;</pre></div>

[英]jQuery: Auto-Refreshing a `<div>`

我無法讓這個<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>

聊天數據.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; ?>

一切看起來都應該有效。 $.get 中的 URL 是否需要是“js/chat_data.php”而不是“chat_data.php”?

此外,我會將 php 包含在 div 之外,因為無論如何它都會通過 AJAX 加載。

您得到的錯誤是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位於哪個文件夾? 應用程序/控制器?

一些想法和一個替代代碼示例。 很難說你的問題出在哪里,所以這些只是一些想法。

  • 您可以將等待移至 PHP 而不是使用 javascript 計時器重新執行

  • 嘗試使用更簡單的 jQuery.load() 方法。

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

在 PHP 側,

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

效果類似,但簡化了一點。 在返回 output 之前,不會調用 updateChat() function。

嗯,只是一個想法。 不確定它是否是正確的解決方案,但它可以幫助您隔離問題(取出 js 計時器變量)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM