我有这个代码,我正在编程时使用PsPad编辑器。当我在PsPad中运行“HTML页面预览”时它可以工作,但是当我尝试在浏览器中打开它时它不起作用。在Chrome上,它只会提醒“Undefined is not a function”。在Firefox上,它只打印undefined和警告空窗口。在Internet Explorer上它什么都不做。如果可能的话,你能用代码示例给我一些简单的答案吗?(这段代码应该打印XML的内容)
<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
</head>
<body>
<script>
var xmldoc= loadXMLDoc('skoly.xml');
var d = document.createElement('div');
var t = document.createTextNode(xmldoc.xml);
d.appendChild(t);
document.write('<pre>' + d.innerHTML + '</pre>');
alert(xmldoc.xml);
</script>
</body>
</html>
loadxmldoc.js:
function loadXMLDoc(dname) {
try { //Internet Explorer
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
} catch(e) {
try { //Firefox, Mozilla, Opera, etc.
xmlDoc=document.implementation.createDocument("","",null);
} catch(e) {
alert(e.message)
}
}
try {
xmlDoc.async=false;
xmlDoc.load(dname);
return(xmlDoc);
} catch(e) {
alert(e.message)
}
return(null);
}
答案 0 :(得分:0)
您为Firefox / Chrome实例化XMLHttpRequest对象的声明不正确,要正确实例化,请执行以下操作:
var xmldoc = new XMLHttpRequest();
要从同一个域获取文档(出于安全原因无法从不同的域获取),请使用open方法获取xml。
xml.open(method, url, boolean);
xml.send(null); // if using post, then you will send data and not null*
// method - GET or POST
// url - location to the file being loaded
// bool - true or false(true for asynchronous)
这是使用ajax获取文件的最简单的函数:
<script>
function loadxmldoc(method, url)
{
var xml;
try
{
xml = new ActiveXObject('Microsoft.XMLDOM');
}
catch(e)
{
try
{
xml = new XMLHttpRequest();
}
catch(e)
{
alert('Couldn\'t instantiate ajax');
}
}
xml.onreadystatechange = function()
{
if( xml.readyState == 4 && xml.status == 200 )
{ // ajax ready // page found
document.getElementById('someId').innerHTML = xml.responseText;
}
};
xml.open(method, url, true); // open connection
xml.send(null);
}
</script>
我正在使用xml.responseText
,对您而言,它应该是xml.responseXml
,您必须正确解析它。
答案 1 :(得分:0)
这部分返回错误:
alert(xmldoc.xml);
我不确定你想要实现什么,但是这段代码试图返回一个属性&#34; xml&#34;变量&#34; xmldoc&#34;。换句话说,如果xmldoc是一个如下所示的对象,这将起作用:
var xmldoc = {
xml: "something here"
};
它正在返回&#34;无法读取属性&#39; xml&#39; of null&#34;因为xmldoc的值为null,而您正在尝试返回其属性。