2013-06-27 65 views
0

我需要加載尚未加載的新消息,並將它們添加到div,但是我不知道如何。
最好的方法是按時間檢查它。 var chatdata = null;從PHP獲取JSON的新項目

$.ajax({ 
    type: "GET", 
    data: {id: id}, 
    url: "/chatbin/receive-bin.php", 
    dataType: "json", 
    cache: false, 
    async: true, 
    contentType: "application/json", 
    success: function(data) { 
     chatdata = ""; 
     $('#chattext').html(''); 
     $.each(data.messages, function(i,dat){ 
      chatdata += "<div class='message'><img class='chatuserimg' src='/assets/userpics/" + dat.id + "_64.png'><span class='userdname'>" + dat.dname + "<span class='time'>" + dat.time + "</span></span><div class='message_text'>" + dat.message + "</div></div>\n"; 
     }); 

     gotoBottom(); 
     $('#chattext').append(chatdata); 
     gotoBottom(); 

     c_id = id; 
     autofocus(); 

     setInterval(checkNewmsg, 1000); 
    }, 
    error: function(xhr, status, error) { 
     alert('There was an error while sending the request, please try again later.'); 
    } 
}); 

JSON文件:

{"messages": [ 
{"dname":"Person1", "id":"1", "message":"Hi", "time":"25.06.2013, 14:49"}, 
{"dname":"Person2", "id":"2", "message":"Cheers", "time":"25.06.2013, 14:50"} 
]} 
+0

你會發現這個問題有幫助http://stackoverflow.com/ question/15449364/how-to-check-if-a-json-object-value-has-changed-when-new-request-is-captured – PoX

+0

是的,你可以使用時間戳發送你收到的最後一條消息的時間戳。其他方法是使用長輪詢,並且只在有新消息可用時發送響應。 – Pitchinnate

+0

哪一個是消息ID或時間的唯一標識符 – Sundar

回答

0

如果時間消息的唯一標識符,定時播放

$.ajax({ 
    type: "GET", 
    data: {id: id}, 
    url: "/chatbin/receive-bin.php", 
    dataType: "json", 
    cache: false, 
    async: true, 
    contentType: "application/json", 
    success: function(data) { 
     chatdata = ""; 
     $('#chattext').html(''); 
     $.each(data.messages, function(i,dat){ 

      //play with class here -- if time is unique identifier of the message 
      var class = date.time.replace(/\./g,"-").replace(/\:/g,"-").replace(/\,\s/g,"-"); 

      if(!$('.message').hasClass(class)) 
      { 
      chatdata += "<div class='message "+class+"' ><img class='chatuserimg' src='/assets/userpics/" + dat.id + "_64.png'><span class='userdname'>" + dat.dname + "<span class='time'>" + dat.time + "</span></span><div class='message_text'>" + dat.message + "</div></div>\n"; 
      } 
     }); 

      gotoBottom(); 
      $('#chattext').append(chatdata); 
      gotoBottom(); 

      c_id = id; 
      autofocus(); 

      setInterval(checkNewmsg, 1000); 
    }, 
    error: function(xhr, status, error) { 
     alert('There was an error while sending the request, please try again later.'); 
    } 
});