【问题标题】:AJAX unable to get value of the property childNodesAJAX 无法获取属性 childNodes 的值
【发布时间】:2012-05-11 17:42:35
【问题描述】:

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

【问题讨论】:

  • 当您在浏览器中转到test3.php 时会发生什么?

标签: php xml ajax


【解决方案1】:

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

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

<?php
  header('Content-type: text/xml');
  // (...generate your XML...)
  echo $xml;
?>

【讨论】:

    猜你喜欢
    • 2014-12-29
    • 2015-12-08
    • 2015-02-18
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多