[英]why it gives me weird result for XmlHttpRequest object?
我使用以下代码来读取xml
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "/TinyEditor/XML/PreviewBody.xml", true);
xmlhttp.send();
alert(xmlhttp);
var xmlDoc;
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
xmlDoc = xmlhttp.responseXML;
alert(xmlDoc);
}
alert(xmlDoc);
我看到的奇怪的是xmlHttp读取XML,但xmlDoc未定义为错误。 当我应用调试器并跟踪它时,在这种情况下xmlDoc不会未定义。 为什么这样?
默认情况下, ajax
请求( 异步 Javascript和XML)是异步的。
这意味着,您过早地访问xmlhttp
变量。 它没有readyState === 4那时它的状态=== 200。 您需要将其放入每次触发的onreadystatechange
处理程序,当前请求的就绪状态更改。
xmlhttp.onreadystatechange = function() {
var xmlDoc;
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
xmlDoc = xmlhttp.responseXML;
alert(xmlDoc);
}
};
注意,以上是一个非常简约的例子。 在现实世界的代码中,您需要制作更多浏览器依赖的东西(主要用于IE)。
如果未定义的错误来自代码的最后一行,那么它是有意义的,因为可能没有定义变量,因为您在if
子句中定义了它的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.