我正在尝试使用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的新手,所以如果这对你来说很简单,那可能不适合我。谢谢你的帮助。
答案 0 :(得分:1)
为此,我认为最简单的方法是在html消息中传递一个属性,该属性将填充消息的id。 当你使用jQuery进行ajax调用时,你可以很容易地获得你已经显示的最后一条消息的id,并将这些信息传递给php,只获得比这更新的消息。