欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

模仿韩顺平老师做的web聊天系统,大神帮忙看下出了啥问题

程序员文章站 2022-06-13 09:34:04
...
*******chatRoom.php******

网页聊天室(正在和聊天)


*********getMessageController.php********getMessage($getter,$sender); echo $messageList; ?>*********MessageService.class.php********execute_dml($sql);} function getMessage($getter,$sender){ $sql="select * from messages where getter='$getter' and sender='$sender' and isGet=0"; $sqlHelper=new SqlHelper(); $array=$sqlHelper->execute_dql2($sql); $messageInfo=""; for($i=0;$i{$row['id']}{$row['sender']}{$row['getter']}{$row['content']}{$row['sendtime']}"; } $messageInfo.=""; $sqlHelper->close_connect(); return $messageInfo; }}?>

大神帮忙看下问题出在哪了?


回复讨论(解决方案)

没仔细看。单这一句: session_start();
因其前面有html标签的输出,肯定会有“headers already sent”的错误提示的吧?

你都没说你出什么问题了,让大家如何下手

没仔细看。单这一句: session_start();
因其前面有html标签的输出,肯定会有“headers already sent”的错误提示的吧?

你都没说你出什么问题了,让大家如何下手


 function getMessage(){    //创建一个xmlHttpRequest对象    var myXmlHttpRequest=getXmlHttpObject();    if(myXmlHttpRequest){              var url="getMessageController.php";     var data="getter=&sender=";           myXmlHttpRequest.open("post",url,true);     myXmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");     myXmlHttpRequest.onreadystatechange=function(){      if(myXmlHttpRequest.readyState==4){        if(myXmlHttpRequest.status==200){          //注释1 window.alert("aaa");          var mesRes=myXmlHttpRequest.responseXML;          var cons=mesRes.getElementsByTagName("con");          var sendtimes=mesRes.getElementsByTagName("sendtime");          //注释2 window.alert("bbb");          if(cons.length!=0){            for(var i=0;i说:"+cons[i].childNodes[0].nodeValue+"___"+sendtimes[i].childNodes[0].nodeValue;                                       }          }        }      }     }     myXmlHttpRequest.send(data);    }  }

主要就是回调函数出问题, 注释1处的能响应,但是注释2处的window.alert就无法响应。大神帮忙看下。

书写健壮的代码是很重要的

....if(myXmlHttpRequest.status==200){  var mesRes=myXmlHttpRequest.responseXML;  if(mesRes.xml == '') { //如果不是 xml 对象    alert(myXmlHttpRequest.responseText);//看一下究竟返回了什么    return;  }....

这个估计也就是个外表吧,性能比较差。
聊天室,采用websockeet或comet,
其次也不必用数据库,redis或文件存储即可

书写健壮的代码是很重要的

....if(myXmlHttpRequest.status==200){  var mesRes=myXmlHttpRequest.responseXML;  if(mesRes.xml == '') { //如果不是 xml 对象    alert(myXmlHttpRequest.responseText);//看一下究竟返回了什么    return;  }....
谢谢,已经解决了,怪我粗心了,原来是MessageService.class.php中,第二个header()的分号写成了冒号,晕死啊!

这个估计也就是个外表吧,性能比较差。
聊天室,采用websockeet或comet,
其次也不必用数据库,redis或文件存储即可

嗯,谢谢了。

header("Cache-Control:no-cache"):
这种错误,提示应该很明显吧

谢谢,已经解决了,怪我粗心了,原来是MessageService.class.php中,第二个header()的分号写成了冒号,晕死啊!

我的错误跟你的一样,但是MessageService.class.php并没有使用header()呀??