关于responeXML的返回值
突然想尝试写一个Ajax来学习研究下了,去w3c school看了Ajax的介绍后,了解到Ajax其实就是利用了javascript的一个XMLHttpRequest对象来与server端通信,从而达到异步更新页面的 效果。用XMLHttpRequest的responseText来尝试返回一个文本没问题后,就尝试用responseXML 来返回一个XML并用javascript来处理了,但中间却经历了不少波折~
服务端生成xml的代码:
<?php
header("Content-type:text/xml"); //发送文件头让浏览器知道这是
XML header("Cache-Control: no-cache"); //缓存处理
echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?> //XML文件的第一行,在它之前不 能有任何输出。 <ddd>wowowo</ddd> ";
?>
在生成xml文件时真的要注意在<?xml ?>标签前的空格和空行,都会引起xml报错的~
浏览端代码:
<html>
<script>
function getget(){
y=document.getElementById("yoyo");
var xmlhttp;
try {
xmlhttp=new XMLHttpRequest;
}catch(e) {
try {
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e) {
alert("你的浏览器连AJAX都无支持~~");
}
}
xmlhttp.onreadystatechange=function() {
if(xmlhttp.readyState==4) {
xc=xmlhttp.responseXML;
y.value=xc.getElementsByTagName("ddd")[0].childNodes[0].nodeValue;
}
}
xmlhttp.open("post","ddd.php",true);
xmlhttp.send(null);
}
</script>
<input id="yoyo" type="text"> <input type="button" value="haha" onclick="getget();">
</html>
在w3c的教程中看到是这样赋值个xc的:xc=xmlhttp.responseXML.documentElement,但我用 这种赋值方式时,浏览器会报错~最后朋友告诉我responseXML返回的是一个文档,这样的话直 接将xmlhttp.responseXML赋予xc后,用xc.getElementsByTagName就可以提取数据了~
这只是一个很简单的实例,连发送数据给server端的代码也没有,不过这主要是用来学习研 究怎样处理responseXML返回的XML数据~了解了这个后,要改进此段代码也变的轻松了~