0

我正在使用以下代码读取 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 有关还是我遗漏了什么?

4

1 回答 1

0

为了让您的浏览器将 XML 解释为 XML,服务器必须使用正确的Content-type标头 (ie text/xml) 发送它。默认情况下,您的服务器只会对xml文件扩展名执行此操作。

在您的 PHP 代码中,在输出任何 XML 之前,您可以Content-type像这样设置标头:

<?php
  header('Content-type: text/xml');
  // (...generate your XML...)
  echo $xml;
?>
于 2012-05-11T18:07:10.140 回答