2013-10-24 62 views
1

我想做一个简单的PHP聊天应用程序,通过AJAX从客户端接收数据,并将该数据写入文本文件进行存储。但我不断收到一个未定义的索引错误,我试图在解析json后得到'name'和'message'。简单的PHP AJAX聊天

这是chat.php文件:

<?php 
    if (isset($_POST['data'])) 
    {   
     $data = $_POST['data']; 
     $chat = json_decode($data); 
     $name = $chat->name; 
     $msg = $chat->msg; 

     $file = "chat.txt"; 
     $fh = fopen($file, 'w') or die("Sorry, could not open the file."); 

     if (fwrite($fh, $name + ":" + $msg)) 
     { 
      $response = json_encode(array('exists' => true)); 
     } else { 
      $response = json_encode(array('exists' => false)); 
     } 
     fclose($fh); 
     echo "<script type='text/javascript'>alert ('" + $name + $msg + "')</script>" 
    } 
?> 

这是JavaScript:

<script type="text/javascript"> 
      $(document).ready(function() { 
       $("#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(response) { 
          // display chat data stored in text file 
         } 
        }); 
       }); 
      }); 
     </script> 
+1

串联应该使用PHP中的'.'而不是'+'来完成。 –

+0

是的,谢谢,我没有注意到:D和我与未定义索引的问题是因为我在数组中使用不同的键。 –

+0

我现在重新编辑帖子。 –

回答

3

可能是你$聊天变量

$chat = json_decode($data); 

不包含这些字段,但名称和讯息,因为你在这里delcared:

var data = { 
    Name : name, 
    Message : msg 
} 

name和msg是valuse,字段名称是Name和Message。

请尝试print_r($ chat)查看它包含的内容。