2012-05-11 2 views
0

я использую следующий код, чтобы прочитать XML-файл -AJAX не может получить значение из ChildNodes собственности

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 File

    <?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

Что происходит, когда вы идете к 'test3.php' в вашем браузере? –

ответ

0

Для того чтобы XML был интерпретирован как XML вашим браузером, сервер должен отправить его с правильным заголовком Content-type (т. Е. text/xml). По умолчанию ваш сервер будет делать это только для расширения файла xml.

В вашем PHP код, прежде чем вы выход какой-либо из XML, вы можете установить заголовок Content-type следующим образом:

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

Спасибо, миллион! – Lamer