2011-10-17 63 views
3

我想創建一個聊天框,並且我在互聯網上發現了一些片段,但它們看起來太大以至於無法理解。閱讀所有這些內容後,我有一個基本的方法來處理它:聊天框工作?這是正確的方式嗎?

  1. 在包含像用戶名,消息和時間戳這樣的列的mysql中創建表。
  2. 使用AJAX並讓user1將消息發送到數據庫而不刷新。
  3. 讓user2從數據庫中檢索消息。

我是AJAX和網頁設計的初學者,說實話我只知道使用AJAX獲取數據和發佈數據,但我的問題是:如何在某些用戶發佈內容時更新聊天框?

我知道如何發佈消息,當用戶點擊發送按鈕,但如何更新到其他用戶沒有點擊任何按鈕?

有沒有辦法檢測用戶在數據庫中發佈數據的事件,如post_event,以便我們可以在用戶發佈內容時執行一些操作?

就我們所知,我們在JavaScript中有很多事件,請幫助我解決這些問題。

我一直在使用AJAX,這是一個很好的做法還是壞的?我的一個朋友說在一個網站上運行一個chatbox應用程序的成本比正常的網站要高得多嗎?如果一個網站有一個聊天應用程序,它的成本更高,即使它的流量較少?

回答

1

最簡單的方法:

要更新您的聊天窗口喲u必須通過請求到服務器(使用Ajax),和後接收到的數據在一定的textarea(ID爲「TextAreaId」爲例):

<script type="text/javascript"> 
function updateChat() { 
      $.ajax({ 
        url: "your_url", 
        type: "POST", 
        success: function (data) { 
         $("#TextAreaId").value = data;    
        } 
       }); 
} 
</script> 

服務器端應返回的消息一定量(去年20例如)。

要使用一段時間更新您的聊天窗口中,你可以使用:

<body onload="setInterval('updateChat()', 1000)"> 

要發佈一些消息,但AJAX來:

<script type="text/javascript"> 
function postMessage() { 
      $.ajax({ 
        url: "your_url", 
        type: "POST", 
        data: "message = " + Message + "&user = " + User, // pass message and user name 
        success: function (data) { 
         updateChat(); 
        } 
       }); 
} 
</script> 

並與PHP或ASP處理您的服務器端Ajax請求。


我認爲最好使用一些文本文件而不是數據庫。它減少了服務器負載。

There你可以找到一個mechanizm,可以幫助你從服務器Ajax.Request

Here拿到效應初探你可以找到聊天的例子。

Here我發現的最簡單的例子。

1

你需要一個計時器

this.ajaxError(function (event, request, settings) { 
     //code to set timer 
    }); 

然後,你需要一個jQuery函數自上次更新檢索所有消息

 getMessages = function() { 

     clearTimer(); 
     var postData = getPostData(); 
     postData.ChatMessage = ''; 

     $.post(url, postData, applyData, settings.dataType); 
    } 

哪裏POSTDATA是LASTUPDATED,聊天室ID等

變量