Javascript-XMLHttpRequest,结果总是未定义的
Javascript - XMLHttpRequest, result are always undefined
我正在尝试测试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
"给我"[对象元素]"
我的错误在哪里?
附言:我只对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>
所以,也许我的问题就在我试图找到<group>
标签的路上?
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,这意味着请求已被完全服务。
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
吗?
相关文章:
- 试图将onChange函数作为道具传递给GrandChlidren,结果是TypeError:这是未定义的
- 解析-为什么user.getSessionToken()返回未定义的结果
- Chrome扩展,Chrome.tabs.query的结果未定义
- 从JSON API结果迭代时未定义
- json-api和错误结果:无法读取属性'长度'的未定义
- 在页面对象文件中验证sendKeys结果会导致未定义的错误(Protractor)
- Meteor js-控制台显示'未定义'即使返回结果
- 获取结果未定义(主干.js)
- 从 Angular 数据工厂中的 HTTP POST 请求接收未定义的结果
- 离子警报 - 检查结果是否未定义
- 使用String.FromCharCode时,jQuery返回未定义的结果
- 解析JSON字符串返回未定义的结果
- Javascript:添加键值对文字,给出未定义的结果
- Javascript/Underscore赢得't跳过未定义的结果
- 为什么这个JavaScript代码的结果是“;未定义”;
- “渲染骨干模型视图”返回未定义的结果
- 流星:防止 findOne() 的未定义结果
- node.js process.env:将 process.env 属性分配给字符串类型中的未定义结果
- JSON “未定义”结果
- 打印数组时的 JavaScript 未定义结果