javascript - AJAX 请求从聊天数据库获取最新的、唯一的消息

标签 javascript jquery mysql ajax

我正在尝试使用 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/

相关文章:

javascript - 在 CodeIgniter 中高效压缩 CSS 和 JS

php - 如何将我的 json 数组发送到 mysql 数据库中的几行

mysql - 在mysql中连接字符串并在它们之间添加字符

php - Codeigniter 无法识别我的数据库

javascript - 在内联 CSS 中使用 javascript 变量

javascript - 赋值后有感叹号 : A = B ! C

jquery - 在 jQuery 中选择最深的子级

javascript - AJAX 表单正在向自身提交?

mysql - Sequelize 获取查询的所有数据而不执行我的条件 'where'

javascript - 左边的花式框文字