登录  /  注册

getElementsByTagName问题求解

php中文网
发布: 2016-06-23 14:06:20
原创
875人浏览过

<html><head><?php	$username=$_GET['username'];	$username=trim($username);//去掉空格	session_start();	$loginuser=$_SESSION['loginuser'];?><meta http-equiv="content-type" content="text/html;charset=utf-8"/><script src="my.js"></script><script>	window.resizeTo(500,400);	window.setInterval("getMessage()",5000);		function getMessage(){			var myXmlHttpRequest=getXmlHttpObject();		if(myXmlHttpRequest){				var url="GetMessageControl.php";			var data="getter=<?php echo $loginuser; ?>&sender=<?php echo $username; ?>";			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){						var mesRes=myXmlHttpRequest.responseXML;						var cons=mesRes.getElementsByTagName("con");						var sendTimes=mesRes.getElementsByTagName("sendTime");						window.alert(cons.length);						if(cons.length!=0){							for(var i=0;i<cons.length;i++){								$('mycons').value+="<?php echo $username; ?>对<?php echo $loginuser; ?>说:"+cons[i].childNodes[0].nodeValue+" "+sendTimes[i].childNodes[0].nodeValue; 														}						}					}				}						}			myXmlHttpRequest.send(data);		}		}	function sendMessage(){		var myXmlHttpRequest=getXmlHttpObject();		if(myXmlHttpRequest){			var url="SendMessageControl.php";			//js中使用php数据			var data="con="+$('con').value+"&getter=<?php echo $username; ?>&sender=<?php echo $loginuser; ?>";			window.alert(data);					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){											}				}						}			myXmlHttpRequest.send(data);		}		}</script></head><center><h1>聊天室(您正在和<font color="red"><?php echo $username; ?></font>聊天)</h1>	<textarea cols="30" rows="10" id="mycons"></textarea><br>	<input type="text" style="width:200px" id="con">	<input type="button" value="send" onclick="sendMessage()"></center></html>
登录后复制




<?php	include 'SqlHelper.class.php';	class MessageService{		//将数据信息添加到数据库		function addMessage($sender,$getter,$con){			$sql="insert into message (sender,getter,content,sendTime) values('$sender','$getter','$con',now())";					//	file_put_contents("d:/test.txt","sql=".$sql."\r\n",FILE_APPEND);					$sqlHelper=new SqlHelper();			return $sqlHelper->execute_dml($sql);										}		//获取信息,并把数据组装好返回给客户端(聊天室)		function getMessage($getter,$sender){			$sql="select * from message where getter='$getter' and sender='$sender' and isGet=0";					$sqlHelper=new SqlHelper();			$array=$sqlHelper->execute_dql2($sql);			$messageInfo="<meses>";			for($i=0;$i< count($array);$i++){				$row=$array[$i];				$messageInfo.="<mesid>{$row['id']}</mesid><sender>{$row['sender']}</sender><getter>{$row['getter']}</getter><con>{$row['content']}</con><sendTime>{$row['sendTime']}</sendTime>";			}			$messageInfo.="</meses>";				file_put_contents("d:/test.txt",$messageInfo."\r\n",FILE_APPEND);			$sqlHelper->close_connect();			return $messageInfo;		}	}	
登录后复制





<?php//这个控制器专门响应用户取数据的请求	header("conntent-type:text/xml;charset=utf-8");	header("Cache-Control:no-cache");	$getter=$_POST['getter'];	$sender=$_POST['sender'];	//	file_put_contents("d:/test.txt",$sender."-".$getter,FILE_APPEND);	require_once 'MessageService.class.php';	$messageService=new MessageService();	$mesList=$messageService->getMessage($getter,$sender);//	file_put_contents("d:/test.txt","news--".$mesList."\r\n",FILE_APPEND);	echo $mesList;?>
登录后复制




为什么在第一段函数getMessage()中
var cons=mesRes.getElementsByTagName("con");
alert时为0.数据库中有添加了记录
我看的是韩顺平的php视频。
求大神搭救


回复讨论(解决方案)

在IE中getElementsByName()是根据ID来取的,但在其他浏览器中,是正常按name属性来取的,因此如果你的代码运行在非IE浏览器上,就会出现取不到值的现象

抱歉,没留意你写的是 getElementsByTagName() 你应该改成 getElementById()
var cons=mesRes.getElementById("con");
var sendTimes=mesRes.getElementById("sendTime");
另外你还有不少低级的错误
$('mycons').value+="说:"+cons[i].childNodes[0].nodeValue+" "+sendTimes[i].childNodes[0].nodeValue;
php代码是不会被客户端浏览器执行的,而且你得到的 cons, sendTimes 都只是一个DOM对象,而不是一个结果集

抱歉,没留意你写的是 getElementsByTagName() 你应该改成 getElementById()
var cons=mesRes.getElementById("con");
var sendTimes=mesRes.getElementById("sendTime");
另外你还有不少低级的错误
$('mycons').value+="

很感谢你的指导。新手呢,我今天知道问题出在哪了

 header("conntent-type:text/xml;charset=utf-8");    header("Cache-Control:no-cache");
登录后复制

这里是content-type打多了个n

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号