我有一个我编码的网站应该从外部网站获取一些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');
}
答案 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/