1
當我實現聊天功能,我用java腳本來發送文件之間的數據到另一個。 但我面對它的一些問題。XMLHttpRequest問題
代碼:Send.php
<?php
session_start();
$user_id=$_SESSION['user_id'];
$data=$_POST['data'];
$message=strip_tags($_POST['message']);
$message=stripslashes($message);
include 'connent.php';
$MembernameR = mysql_query("select MemberName from members where MemberID = '$user_id'");
$Membername = mysql_fetch_row($MembernameR);
$user = $Membername[0];
$room_file=file("room1.txt",FILE_IGNORE_NEW_LINES);
$room_file[]=time()."<[email protected]!>".$user.": ".$message;
if (count($room_file)>20)
$room_file=array_slice($room_file,1);
$file_save=fopen("room1.txt","w+");
flock($file_save,LOCK_EX);
for($line=0;$line<count($room_file);$line++){
fputs($file_save,$room_file[$line]."\n");
};
flock($file_save,LOCK_UN);
fclose($file_save);
echo "sentok";
exit();
?>
的
lastReceived=0;
var xmlhttp;
// Sign in and Out
function signInOut(){
// Sign in
if (signInForm.signInButt.name=="signIn"){
data="user=" + signInForm.userName.value +"&oper=signin"
Requst ("POST","users.php",data,checkSignIn)
return false
}
}
// Sign out
function singout(){
data="user=" + "" +"&oper=signout"
Requst ("POST","users.php",data,checkSignOut)
return false;
}
// Sign in response
function checkSignIn(res){
if(res=="userexist"){
checkSignOut("signout");
checkSignIn("signin");
return false;
}
if(res=="signin"){
messageForm.message.focus()
updateInterval=setInterval("updateInfo()",3000);
serverRes.innerHTML="Sign in"
}
}
// Sign out response
function checkSignOut(res){
if(res=="usernotfound"){
serverRes.innerHTML="Sign out error";
res="signout"
}
if(res=="signout"){
clearInterval(updateInterval)
serverRes.innerHTML="Sign out"
return false
}
}
// Update info
function updateInfo(){
serverRes.innerHTML="Updating"
Requst ("POST","users.php","",showUsers)
Requst ("POST","receive.php","lastreceived="+lastReceived,showMessages)
}
// update online users
function showUsers(res){
usersOnLine.innerHTML=res
}
// Update messages view
function showMessages(res){
serverRes.innerHTML=""
msgTmArr=res.split("<SRVTM>")
lastReceived=msgTmArr[1]
messages=document.createElement("span")
messages.innerHTML=msgTmArr[0]
chatBox.appendChild(messages)
chatBox.scrollTop=chatBox.scrollHeight
}
// Send message
function sendMessage(){
data="message="+messageForm.message.value+"&user="+signInForm.userName.value
serverRes.innerHTML="Sending"
Requst ("POST","send.php",data,sentOk)
}
// Sent Ok
function sentOk(res){
if(res=="sentok"){
messageForm.message.value=""
messageForm.message.focus()
serverRes.innerHTML="Sent"
}
else{
serverRes.innerHTML="Not sent"
}
}
function Requst (Action,URL,Data,Fun)
{
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState == 4)
eval(Fun(xmlhttp.responseText));
}
Data=encodeURI(Data);
xmlhttp.open(Action,URL,true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length",Data.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(Data);
}
的代碼,我認爲這個問題是在功能 「Requst」 它不工作或在文件中的會話Send.php
你能告訴我我如何解決它? 或者你能告訴我爲什麼上面的代碼不工作嗎? :(
爲什麼地球上不使用類似jQuery的庫來做到這一點?如果你告訴我們什麼實際上不起作用,這將有所幫助 - 「它運作不好」沒有告訴我們什麼。 – ceejayoz 2010-06-22 15:23:56
你有什麼錯誤嗎?是否發送了請求?用Firebug檢查。 – 2010-06-22 15:30:58
問題是什麼? – 2010-06-22 15:33:21