Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在纯javascript中从xml加载数据_Javascript_Html_Xml - Fatal编程技术网

无法在纯javascript中从xml加载数据

无法在纯javascript中从xml加载数据,javascript,html,xml,Javascript,Html,Xml,我正在尝试从xml加载数据。这是我的密码 function myFunction(){ debugger; var url = "js/MyXml.xml"; var httpRequest = new XMLHttpRequest(); httpRequest.open('GET', url, true); httpRequest.send(); var xmlDoc=httpRequest

我正在尝试从xml加载数据。这是我的密码

function myFunction(){
    debugger;
        var url = "js/MyXml.xml";
        var httpRequest = new XMLHttpRequest();
            httpRequest.open('GET', url, true);
            httpRequest.send();
        var xmlDoc=httpRequest.responseXML;
    }
在httpRequest中,我得到的状态代码是,httpRequest.responseXML=null

Cab请帮我找出我做错了什么。

换成:

 httpRequest.open('GET', url, false);
使用true参数可以将请求设置为异步

这意味着您在请求完成执行之前读取响应

将最后一个参数设置为false会将请求设置为同步,因此它将阻止您的网页,直到请求完成

一种正确的方法是在异步请求完成时创建一个事件

以下是一个例子:

function myFunction() {
    debugger;
    var url = "js/MyXml.xml";
    var httpRequest = new XMLHttpRequest();
    httpRequest.open('GET', url, true);
    httpRequest.onload = function(oEvent) {
        var xmlDoc = httpRequest.responseXML;
        //Continue code here
    }
    httpRequest.send();

}
改为:

 httpRequest.open('GET', url, false);
使用true参数可以将请求设置为异步

这意味着您在请求完成执行之前读取响应

将最后一个参数设置为false会将请求设置为同步,因此它将阻止您的网页,直到请求完成

一种正确的方法是在异步请求完成时创建一个事件

以下是一个例子:

function myFunction() {
    debugger;
    var url = "js/MyXml.xml";
    var httpRequest = new XMLHttpRequest();
    httpRequest.open('GET', url, true);
    httpRequest.onload = function(oEvent) {
        var xmlDoc = httpRequest.responseXML;
        //Continue code here
    }
    httpRequest.send();

}

在您的例子中,您使用了XMLHttpRequest调用,这是异步的。此外,您尝试在实际答案到达之前将返回值分配给变量,无论它是从服务器读取文件还是实际响应

在任何情况下,如果您决定使用异步(这是首选方式),请遵守下面提供的代码。 另外,我鼓励你自己在下面提供的链接中做更多的调查

var url = "js/MyXml.xml";
var xhttp = new XMLHttpRequest();
var xmlDoc = null;
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
       xmlDoc = httpRequest.responseXML;
    }
};
xhttp.open("GET", url, true);
xhttp.send();
除此之外,您还可以使用,它也应该在您的javascript环境中可用。根据MDN,这仍然是实验技术,但它将提供有益的知识

最后,对于手头的任务,您可以使用一个库,该库旨在使此任务比本机任务更容易。其中一个是一个。它可能更容易使用


你可以找到更多的信息。也很容易理解。

在您的例子中,您使用了XMLHttpRequest调用,这是异步的。此外,您尝试在实际答案到达之前将返回值分配给变量,无论它是从服务器读取文件还是实际响应

在任何情况下,如果您决定使用异步(这是首选方式),请遵守下面提供的代码。 另外,我鼓励你自己在下面提供的链接中做更多的调查

var url = "js/MyXml.xml";
var xhttp = new XMLHttpRequest();
var xmlDoc = null;
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
       xmlDoc = httpRequest.responseXML;
    }
};
xhttp.open("GET", url, true);
xhttp.send();
除此之外,您还可以使用,它也应该在您的javascript环境中可用。根据MDN,这仍然是实验技术,但它将提供有益的知识

最后,对于手头的任务,您可以使用一个库,该库旨在使此任务比本机任务更容易。其中一个是一个。它可能更容易使用

你可以找到更多的信息。也很容易理解