如何使用jQuery AJAX每秒更新<div>?</div>

时间:2014-04-15 21:06:05

标签: php jquery ajax mysqli

我正在尝试创建简单的聊天,并且需要每秒更新聊天div。这是div:

<div class="left">
        <p>
            <?php
                //Chat dialogini MB'dan o‘qib beradi
                $result = $mysqli->query("SELECT
                    users.nick,
                    text.text
                    FROM
                    text
                    INNER JOIN users ON users.user_id = text.user_id
                    ORDER BY
                    text.chat_id ASC");

                //echo $result = myquery("SELECT * FROM text");
                while ($row = $result->fetch_assoc()) {
                    echo "<span class='user'>" . $row["nick"] . "</span>" . ": " . $row["text"] . "<br />";
                }
            ?>
        </p>
    </div>

这是AJAX代码:

$( document ).ready(function() {
        var auto_refresh =  function () {
            $('.left p').load("add_text.php", function(){
            setTimeout(auto_refresh, 800);
            }).fadeIn();
        }
        auto_refresh();
    });

add_text.php再次重定向到index.php:

 <?php
session_start();
require "php/config.php";
//Ma'lumotlar bazasi bilan bog‘lanish: BOOL = con funksiya
$mysqli = new mysqli($config['DB_HOST'], $config['DB_USERNAME'], $config['DB_PASSWORD'], $config['DB']);
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if(!empty($_POST['chat-text']) || !ctype_space($_POST['chat-text'])) { 
    $mysqli->query("INSERT INTO `text` (`user_id`, `text`) 
                    VALUES ('" . htmlspecialchars($_SESSION['id']) . "', '"
                     . htmlspecialchars($_POST['chat-text']) . "')");
}

    header("Location: http://chat.uz/index.php");
    exit

?>

但更新不起作用。求助。

1 个答案:

答案 0 :(得分:1)

你设置的方式不起作用。

如果重定向实际上有效(我怀疑)并且index.php是包含页眉和页脚的主页面,则将其所有内容放在.left p html元素中将导致极其无效html和多个.left p元素,你在800毫秒后添加一个,在1600毫秒后增加2个,在3200毫秒后增加4个等等。

这会炸毁你的服务器,因为他们都开始发出ajax请求,添加更多元素,同时发出更多的ajax请求。

请注意,当您使用ajax时,实际上并没有重定向,只需在.left p中加载从ajax请求返回的任何html。

您应该直接将查询结果作为json或html返回,并在javascript中处理这些结果(在json的情况下)。

我会用你的php脚本末尾替换header重定向:

echo json_encode($mysqli->fetch_all());
exit;

并更改另一个允许您处理结果的ajax方法的load方法。