仅使用 ajax 加载新数据

Posted

技术标签:

【中文标题】仅使用 ajax 加载新数据【英文标题】:Load only new data with ajax 【发布时间】:2013-02-04 13:15:20 【问题描述】:

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

【讨论】:

好的,这样做听起来不错,现在就好好研究一下,看看会发生什么,谢谢

以上是关于仅使用 ajax 加载新数据的主要内容,如果未能解决你的问题,请参考以下文章

在新页面上加载 ajax 成功数据

如何使用新的 url 和一些参数重新加载数据表而不重新初始化它

将数据推送到页面而不定期检查?

js/ajax 新加载的数据 不执行设定的js代码

关闭以前的 VC 后仅重新加载新数据

Ajax 脚本仅在接收到的 XML 足够大/加载时间足够长时才有效?