2013-02-19 115 views
2

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

这里是我的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让我知道。

回答

2

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

  1. 在后端,你需要让client.php接受查询字符串中的timestamp参数。当返回数据时,不是仅仅返回所有数据,而是从时间戳开始返回,如果给出的话。否则返回一切。
  2. 第一次加载聊天客户端时,您应该做的第一件事是对返回当前服务器时间戳的新PHP文件进行Ajax调用。将其值作为数字存储在Javascript变量中。
  3. 在chat.fetchMessages(),但是,通过长时间一直自上次取(貌似8000毫秒)增加时间戳变量的值,和饲料,为client.php,像url: '/ajax/client.php?timestamp=' + latestFetchTimestamp,
  4. 而不是替换所有的HTML内容,请附加。
+0

好的,这听起来很不错,现在这样做不好,看看会发生什么,谢谢 – iConnor 2013-02-19 18:28:17