javascript XMLHTTPRequest在firefox中返回null

javascript XMLHTTPRequest returning null in firefox

本文关键字:返回 null firefox XMLHTTPRequest javascript      更新时间:2023-09-26

我正在编写一个网站,该网站本应从外部网站获取一些XML并对其进行解析,但它给了我一个类型错误:xmlDoc为null。不知道出了什么问题,我想知道是否有人能帮忙。

这是代码:

编辑:添加更改

        function loadXML()
    {
        var XMLHttpRequestObject = false;
        if (window.XMLHttpRequest) {
            XMLHttpRequestObject = new XMLHttpRequest();
            XMLHttpRequestObject.overrideMimeType("text/xml");
            console.log("XML HTTP Request, xml override.");
        }
         else if (window.ActiveXObject) {
            XMLHttpRequestObject = new
            ActiveXObject("Microsoft.XMLHTTP");
            console.log("ActiveXObject xml request.");
        }
        if(XMLHttpRequestObject) {
            XMLHttpRequestObject.open("GET", xmlLink, true);
            XMLHttpRequestObject.onreadystatechange = function() {
              if (XMLHttpRequestObject.readyState == 4) {
                // Load complete
                var xmlDocument = XMLHttpRequestObject.responseXML;
                parseXML(xmlDocument);
              }
            };
            XMLHttpRequestObject.send(null);
        }
    }
    function parseXML(xmlDoc){
        console.log(xmlDoc);
        var test1 = xmlDoc.getElementsByTagName('icon');
    }

Firefox符合跨源资源共享(CORS)规范。除非有问题的外部网站明确允许*(所有来源),否则您需要遵循以下教程:https://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/

XMLHttpRequestObject.open("GET", xmlLink, true);

因此,这设置了一个异步请求,但实际上还没有发送。

var xmlDocument = XMLHttpRequestObject.responseXML;

这会要求文档,该文档是执行请求并将结果字符串解析为XML的结果。这当然还不存在,因为请求还没有发生。

你想要这样的东西:

XMLHttpRequestObject.open("GET", xmlLink, true);
XMLHttpRequestObject.onreadystatechange = function() {
  if (XMLHttpRequestObject.readyState == 4) {
    // Load complete
    var xmlDocument = XMLHttpRequestObject.responseXML;
    parseXML(xmlDocument);
  }
};
XMLHttpRequestObject.send();