2011-07-31 41 views
0

學習目的 我想打一個很簡單的聊天頁面簡單的Ajax聊天

沒有登錄需要 沒有SQL將被用來

僅PHP,HTML和AJAX是需要 首先,我做了a

chat.html ///////////////////// ////////////////////////////////////////////////// ///////

<html> 
<head> 


<script type="text/javascript"> 
function chat() 
{ 
var xmlhttp; 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 

else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("chat").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","chatreturn.php?name=getElementById("name").value&data=getElementById("data").value",true); 
xmlhttp.send(); 
} 


</script> 


</head> 
<body> 

<form> 
Name: <input type="text" id="name" /> 
writing: <input type="text" id="data" /> 
<button onclick=chat() > 
</form> 
<div id=chat></div> 
</body> 
</html> 

/////////////////////////////////////////////// /////////////////////////////////////////////////// 和chatreturn.php

<html> 
<head> 
</head> 
<body> 
<?php 

$logger = fopen("chatlog.txt","w"); 
$msg = $_GET["name"]; 
$msg += " " + $_GET["data"]; 
fwrite($logger,$msg); 
fclose($logger); 

$logdata = fopen("chatlog.txt","r"); 

$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
$display += fgets($logdata); 
document.write($display); 
fclose($logdata); 
?> 

</body> 
</html> 

///////////////////////////////////// ////////////////////////////////////////////////// ///////////

我希望 每次我發送一條消息,該消息被添加到當前文檔 但奇怪symtom的是,它沒有返回

anyadvice? 感謝先進。

+2

什麼是所有'fgets($ logdata);'? – Cyclone

+0

您似乎混合使用PHP和Javascript。例如'$ display + = fgets($ logdata);'應該是'$ display。= fgets($ logdata);'和'document.write($ display);'應該是'echo $ display;'。只是一個想法。 –

回答

1

學習如何編寫一個聊天程序是很好的,但我的建議是,你需要首先使用正確的工具來完成這項工作。

雖然學習如何烤蘋果派很不錯,但你不需要隨着它一起種植蘋果樹。

  1. 使用庫來幫助你使事情變得更加簡潔,並專注於什麼是你的項目非常重要的,而不是螺母和螺栓周圍。例如,jQuery爲您的XHR將是一個好的開始。

  2. Javascript調試器是處理XHR時必須的。我建議Chrome與開發人員工具。我個人認爲其他任何工具都無法在功能和實用性方面打敗它。

  3. 使用數據庫來存儲您的數據。文件不是一個好主意。

  4. 還有不錯來自PHP手冊的例子;向他們學習。您似乎並沒有完全掌握PHP語法,並混合了服務器端和客戶端代碼(另外,您正在編寫Javascript代碼到您的GET url中?您應該有Javascript錯誤,因爲您的引號甚至不會被轉義)。由於一個聊天程序要求對它們有很好的理解,首先從一些基本的測試開始。