2013-10-24 49 views
0

我正在做一個簡單的php聊天應用程序,通過ajax將消息輸入發送到服務器並將其保存在文本文件中。現在,它檢索文本文件中的所有數據,並通過ajax以數組形式發送給客戶端。現在我想要做的是填充一個名爲「聊天框」的數組作爲html的內容,但沒有任何反應,並且除了「:undefined」以外,在螢火蟲中沒有任何錯誤。設置div html來顯示數組的內容

這是代碼:

<script type="text/javascript"> 
      // setInterval(function(){alert("Hello");}, 5000); 
      $(document).ready(function() { 
       function getchat(messages) 
       { 
        var chat = $(".chat-box").html(); 
        for (var i=0; i < messages.length; i++) 
        { 
         var msg = messages[i].split(':'); 
         var name = msg[0]; 
         var post = msg[1]; 
         $(".chat-box").html(chat + "<div class='bubble'>" + name + " : " + post + "</div>"); 

        } 
       } 

       $("#btnPost").click(function() { 
        var msg = $("#chat-input").val(); 
        if (msg.length == 0) 
        { 
         alert ("Enter a message first!"); 
         return; 
        } 
        var name = $("#name-input").val(); 
        var chat = $(".chat-box").html(); 
        //$(".chat-box").html(chat + "<br /><div class='bubble'>" + msg + "</div>"); 

        var data = { 
         Name : name, 
         Message : msg 
        }; 
        $.ajax({ 
         type: "POST", 
         url: "chat.php", 
         data: { 
          data: JSON.stringify(data) 
         }, 
         dataType: "json", 
         success: function(chat) { 
          getchat(chat) 
         } 
        }); 
       }); 
      }); 
     </script> 
+0

您聲明這是您要顯示的文本文件。將您的Ajax數據類型從json更改爲文本並查看是否有幫助。 – jeff

+2

您能否提供您的php腳本返回的數據樣本? – Bigood

回答

1

試試這個更新的聊天框:

var index = messages[i].indexOf(':'); 
var name = messages[i].substring(0, index); 
var content = messages[i].substring(index + 1); 
var $newMessage = $('<div>') 
     .addClass('bubble') 
     .text(name + " : " + content); 
$(".chat-box").append($newMessage); 

如果這不工作,檢查通過使用console.log(messages)服務器返回的消息是正確的。

0

你說的格稱爲聊天框。也許是這樣的:

$(".chat-box")

也許你打算把它寫成$("#chat-box")