繁体   English   中英

为什么它给了我奇怪的XmlHttpRequest对象的结果?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM