简体   繁体   English

XMLHttpRequest问题

[英]problem with XMLHttpRequest

when I Implemented chatting Function ,I used java Script to Send Data Between File To another . 当我实现聊天功能时,我使用java脚本在文件之间发送数据到另一个。 but I Faced some problem with it . 但是我面临一些问题。

Code : 代码:

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);


}

code of Send.php 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()."<!@!>".$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();
?>

I think the problem is in Function "Requst" it does not Work or the session in File Send.php 我认为问题出在函数“ Requst”中,它不起作用或文件Send.php中的会话

can you tell me How I can Fix it ? 你能告诉我如何解决吗? or can you Tell me why the above code it doesn't work well ? 还是可以告诉我为什么上面的代码不能正常工作? :( :(

try making following changes in your script and try again: 尝试在脚本中进行以下更改,然后重试:

You do not need to use eval in Request function, just call it normally. 您不需要在Request函数中使用eval,只需正​​常调用它即可。

eval(Fun(xmlhttp.responseText)); // no need to eval

Fun(xmlhttp.responseText); // try this one

the second thing, why are you setting the header of Connection to close . 第二件事,为什么要将Connection的标头设置为close
I dont think you need to set this, just remove the following line from your code. 我认为您无需进行设置,只需从代码中删除以下行即可。

xmlhttp.setRequestHeader("Connection", "close"); // try removing this line

Hope this helps! 希望这可以帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM