仅使用ajax加载新数据

时间:2013-02-19 18:18:21

标签: 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 个答案:

答案 0 :(得分:2)

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

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