2013-02-19 54 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