我正在尝试使用 PHP、MySQL 和 AJAX 创建聊天脚本,但我对 javascript 真的很陌生,虽然 ajax 调用有效,但它多次显示相同的消息(并且继续这样做)。这是我的 JavaScript:
var chatUpdate = function(mLID) {
$.ajax({
url: "/getChat/mID/" + mLID,
success: function(data) {
// do something with "data"
if (data.length > 0) {
var page = $(data);
var time = page.find('#time').html();
console.log(time);
var statusText = page.find('#msg').html();
var mID = page.find('#msgID').text();
console.log(mID);
console.log(page.find('#msg').html());
$("#chatTable").append(statusText);
setInterval(chatUpdate(mID), 2500);
}
}
});
};
if(!mID){
var mID = "0";
}
setInterval(chatUpdate(mID), 2500);
我的服务器端脚本只是一个显示数据的 mysql 查询:
$query = "SELECT `chat`.*, `users`.* FROM `chat` JOIN `users` ON `uid` = `cUID` WHERE `cid` > '$mID'";
$data = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($data);
if(count($row) > 0){
echo "<div id='msg'><div style='display:table-row;'><div style='display:table-cell;'><strong>" .$row['username']. "</strong>: </div><div style='display:table-cell;'>" .$row['msg']. "</div></div></div><div id='time'>".$row['time']."</div><div id='msgID'>".$row['cid']."</div>";
}
我要问的是是否有人可以帮助我使脚本只显示每条消息一次,并停止显示消息,直到有新消息为止。我尝试过使用 AJAX 的其他方法,但它们给出的结果与此相同(或者它们只是告诉我控制台中的值未定义并停止脚本。
请记住,我是 JS 新手,所以如果这对你来说似乎很简单,但对我来说可能并不简单。感谢您的帮助。
最佳答案
为此,我认为最简单的方法是在 html 消息中传递一个属性,该属性将填充消息的 id。 当您使用 jQuery 进行 ajax 调用时,您可以轻松获取已显示的最后一条消息的 id,并将此信息传递给 php,以仅获取比此消息更新的消息。
关于javascript - AJAX 请求从聊天数据库获取最新的、唯一的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29572143/