未创建文档对象

时间:2019-02-18 06:30:27

标签: javascript

我正在尝试通过Javascript代码加载网页并使用XPath对其进行解析以获取某些元素的值。我编写的用于创建文档对象的代码会为每个URL重复{location:null}。代码如下:

var req = new XMLHttpRequest();  
        req.open('GET', 'https://www.someurl.com', false);  
    req.overrideMimeType('text/xml; charset=windows-1251'); // for Cyrillic     
        req.send(null);
        if(req.status == 200) { 
           //console.log(req.responseText);
           var xmlString = req.responseText;
           var parser = new DOMParser();
           var xmlDoc = parser.parseFromString(xmlString, "text/xml"); 
            console.log(JSON.stringify(xmlDoc)); // it outputs {"location": null}

        }

请问我是否误服了

1 个答案:

答案 0 :(得分:0)

这是由于XMLHttpRequest()的异步行为所致。由于req.send(null)是一个异步调用,并且事件处理程序将分别处理响应,因此您将获得null。

有关异步行为的更多信息,请参阅Asynchronous Javascript

基本上,您需要附加一个事件处理程序来处理XMLHttpRequest的响应。

req.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      // do your thing here
    }
};

这是在您的req.send(null);

之前完成的