2014-09-13 73 views
0

我有一個簡單的聊天服務。我在Mysql數據庫中存儲消息,登錄和時間等。聊天消息與阿賈克斯& PHP的幫助如何編寫Ajax代碼以在MySQL中插入新行時獲取新行?

<div id="messages"> </div><!--- chats are displayed here --> 

我有以下這些DATAS獲取從MySQL中每2秒Ajax代碼顯示如下。當然,每個人都建議不要這樣做。這可能會對服務器性能產生負面影響它是不必要的。

$(document).ready(function() { 

    var destination_hashed = $("#destination_hashed").val(); 

    var interval = setInterval(function() { 

      $.ajax ({ 
        type: "POST", 
        url: "chat.php", 
        data: { destination_hashed1: destination_hashed }, 

        success: function(data) { 
          $("#messages").html(data); 
        } 
      }); 
    }, 2000); 
}); 

在概括地說,我有兩個聊天客戶甲& B.當A發送消息給B,有插入在MySQL新行。

那麼,我該如何編寫Ajax & PHP代碼才能在有新行時進行提取。而不是新的行是否插入或不

+3

當網站上的所有其他問題都以正常字體大小完成時,不需要在'heading3'中包含所有文本 – charlietfl 2014-09-13 04:33:48

回答

1

最近我有這樣的一個聊天模塊的工作,我可以說一些修正你的代碼

首先,不使用從MySQL中獲取數據每2秒setInterval您正在使用的方式,

爲什麼

,因爲在您的特定代碼的請求被髮送到服務器每隔2秒,所以如果網絡速度慢的代碼都發送到太多要求的傾向到服務器和這些請求之間的協調將是困難的。

所以,你要做的就是

function getNewMessage(){ 

      $.ajax ({ 
        type: "POST", 
        url: "chat.php", 
        data: { destination_hashed1: destination_hashed }, 

        success: function(data) { 
          $("#messages").html(data); 
        }, 
        complete : function(){ // this will be called even if our request fail, success etc 
         setTimeout(function(){ // send request after 2 second from the complition of the previous request 
          getNewMessage();  
         },2000); 
        } 
      }); 

}

有從Ajax調用解析聊天結果兩個接近

一)充分利用Ajax調用了HTML(這將如果你想在未來擴展你的模塊,速度會很慢並且效率低下)

你可以簡單地從ajax調用中獲取html內容,第二是表

For example : - 

    if the response from the server on new message is 

    <div class="chat"> 
     <lable>John</lable> 
     Hi there !!! 
    </div> 

然後分析其內容將是這樣的

   success: function(data) { 
        // $("#messages").html(data); //this will change the content in every request 
        $("#messages").append(data); // this will append the new conent 
      }, 

B)好了其他的計算策略將得到JSON格式(好了很多計算策略)

數據

例如: -

if the response from the server on new message is 

    { 
     username : 'john', 
     message : 'Hi there !!!' 
    } 

然後分析其內容將是這樣

   success: function(data) { 
        // $("#messages").html(data); this will change the content in every request 
        $("#messages").append('<div class="chat">'+ 
              '<lable>'+data.username+'</lable>'+ 
               data.message + 
              '</div>'); this will append the new conent 
      }, 
相關問題