我正在尝试创建简单的聊天,并且需要每秒更新聊天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
?>
但更新不起作用。求助。
答案 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
方法。