我正在使用以下代码来读取XML文件 -
var xmlhttp;
if (window.XMLHttpRequest)
{ // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{ // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
xmlDoc=xmlhttp.responseXML;
tmp = xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
alert ('-' + tmp + '-');
}
}
xmlhttp.open("GET", "test3.php", true);
xmlhttp.send();
XML文件
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
</note>
如果XML文件名为xxxx.PHP或xxxx.XML以外的任何内容,则会收到错误“无法获取属性childNodes的值”。如果XML文件名为xxxx.XML,则可以正常工作。文件完全相同,唯一的区别是扩展名。
这已经在FF,Chrome和IE中进行了测试,结果相同。这不是缓存问题。
我需要扩展为PHP,因此我可以为AJAX生成动态内容。
这可能与php.ini / apache.conf有关,还是有些东西我不知道?
答案 0 :(得分:0)
为了让浏览器将XML解释为XML,服务器必须使用正确的Content-type
标头(即text/xml
)发送它。默认情况下,您的服务器仅对xml
文件扩展名执行此操作。
在PHP代码中,在输出任何XML之前,您可以像这样设置Content-type
标题:
<?php
header('Content-type: text/xml');
// (...generate your XML...)
echo $xml;
?>