php - 使用ajax仅加载新数据

标签 php jquery mysql ajax pdo

我只需要使用 ajax 将新数据加载到我的 div 中。目前我正在加载所有数据,因为如果我删除数据库中的一条记录,它也会从我的聊天 div 中删除它。

这是我的js代码:

var chat = {}
chat.fetchMessages = function () {
    $.ajax({
        url: '/ajax/client.php',
        type: 'post',
        data:  { method: 'fetch', thread: thread},
        success: function(data) {
            $('.chat_window').html(data);
        }
    });
}    

chat.throwMessage = function (message) {
    if ($.trim(message).length != 0) {
        $.ajax({
            url: '/ajax/client.php',
            type: 'post',
            data:  { method: 'throw', message: message, thread: thread},
            success: function(data) {
                chat.fetchMessages();
                chat.entry.val('');
            }
        });
    }
}

chat.entry = $('.entry');

chat.entry.bind('keydown', function(e) {
    if(e.keyCode == 13) {

        if($(this).val() == ''){
        } else {
            chat.throwMessage($(this).val());
            e.preventDefault();
        }

    }
});

chat.interval = setInterval(chat.fetchMessages, 8000);
chat.fetchMessages();

我环顾四周,有人说如果你将时间戳传递给服务器并以这种方式加载新内容,但我似乎无法理解这一点。如果您需要 php,请告诉我。

最佳答案

是的,所以时间戳是最有意义的。您需要做一些事情:

  1. 在后端,您需要使 client.php 接受查询字符串中的时间戳参数。返回数据时,不要只返回全部数据,而是返回自时间戳(如果给定)以来的所有内容。否则返回所有内容。
  2. 第一次加载聊天客户端时,您应该做的第一件事是对新的 PHP 文件进行 Ajax 调用,该文件返回当前服务器时间戳。将其值作为数字存储在 Javascript 变量中。
  3. 在chat.fetchMessages()期间,将时间戳变量的值增加自上次获取以来的时间(看起来像8000毫秒),并将其提供给client.php,例如url: '/ajax/client.php?timestamp='+latestFetchTimestamp,
  4. 不要替换所有 HTML 内容,而是追加内容。

关于php - 使用ajax仅加载新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14964571/

相关文章:

php - PhpStorm 中的 Blade 模板代码格式问题

javascript - 如何只使 Div 可滚动而不是窗口?

php - UTF-8贯穿始终

php - 登录php后重定向到首页

javascript - onclick模态按钮调用php函数

mysql - Laravel ORM 列表 groupBy 相关记录

php - 使用嵌套for循环显示数据

php从mysql解码二进制(16)ip

php - 基于图形/浏览器的 PHP 单元测试套件?

javascript - 如何在jquery自动完成中动态清除和添加源数据