我正在尝试测试xml文件是否包含标记“<group>
”
var xmlhttp = new window.XMLHttpRequest();
xmlhttp.open("GET", "xmlfile.xml", false);
xmlhttp.send(null);
xml = xmlhttp.responseXML.documentElement;
var thegroup = xml.getElementsByTagName('group')[0];
if (!group) {
alert('No <group> in the XML: ' + xml);
return;
} else {
alert(xml + 'have a <group> tag');
}
即使我的xml文件标记为“<group>
”,结果也总是否定的,变量“thegroup
”未定义。
“xml
”给我“[对象元素]”
我的错误在哪里?
PS:我只对webkit感兴趣,我现在不关心IE,Opera或Firefox。
编辑:这是我的实际代码
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=UTF-8">
<title>xmltest</title>
<script type="text/javascript">
function init() {
var xmlhttp = new window.XMLHttpRequest();
xmlhttp.open("GET", "xmlfile.xml");
xmlhttp.send(null);
xmlhttp.onreadystatechange = callbackFunction;
function callbackFunction(){
if (xmlhttp.readyState == 4){
xml = xmlhttp.responseXML.documentElement;
var group = xml.getElementsByTagName('group')[0];
console.debug(xml)
if (!group) {
alert('No <group> in the XML: ' + xml);
return;
} else {
alert(xml + 'have a <group> tag');
}
}
}
};
</script>
</head>
<body onLoad="init();">
</body>
</html>
和我的xmlfile.xml:
<?xml version="1.0" ?>
<group type="vertical">
<name>name</name>
<title>title</title>
</group>
此时触发警报说:
XML中没有<group>
:[object Element]
所以也许我的问题就在于我试图找到<group>
标签的方式?
答案 0 :(得分:7)
XMLHttpRequest是异步的,它不会那样工作。当您使用xmlhttp.send(null);
时,您必须定义将在服务器响应数据时执行的回调函数,否则您将尝试访问空数据。
代码看起来像这样:
var xmlhttp = new window.XMLHttpRequest();
xmlhttp.open("GET", "xmlfile.xml");
xmlhttp.send(null);
xmlhttp.onreadystatechange = callbackFunction;
function callbackFunction(){
if (xmlhttp.readyState == 4){
xml = xmlhttp.responseXML.documentElement;
var thegroup = xml.getElementsByTagName('group')[0];
if (!group) {
alert('No <group> in the XML: ' + xml);
return;
} else {
alert(xml + 'have a <group> tag');
}
}
}
这样,每次服务器发回响应时,您都使用onReadyStateChange
告诉浏览器运行callbackFunction
。它测试readyState
为4,这意味着请求已完全服务。
答案 1 :(得分:1)
var thegroup = xml.getElementsByTagName('group')[0]; if (!group) { alert('No <group> in the XML: ' + xml); return; } else { alert(xml + 'have a <group> tag'); }
什么是group
?您的意思是thegroup
吗?