javascript XMLHTTPRequest在firefox中返回null

时间:2013-11-19 22:16:56

标签: javascript xml firefox typeerror

我有一个我编码的网站应该从外部网站获取一些XML并解析它,但它给了我一个typeError: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');
    }

2 个答案:

答案 0 :(得分:0)

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(); 

答案 1 :(得分:0)

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