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でテストされており、同じ結果が得られています。キャッシュの問題ではありません。

AJAXの動的コンテンツを生成できるように、拡張機能をPHPにする必要があります。

これはphp.ini/apache.confと関係があるのでしょうか、それとも私が見逃しているものがありますか?

4

1 に答える 1

0

XML がブラウザによって XML として解釈されるためには、サーバーは正しいContent-typeヘッダー (つまりtext/xml) を付けて XML を送信する必要があります。デフォルトでは、サーバーはxmlファイル拡張子に対してのみこれを行います。

PHP コードでは、XML を出力する前に、次のContent-typeようにヘッダーを設定できます。

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