2015-10-19 2 views
1

Я пытаюсь получить XML-файл со стороны сервера (PHP), а затем отправить его на стороне клиента (JavaScript). Проблема, с которой я сталкиваюсь, заключается в том, что responseXML сохраняет значение null. Однако, если я изменяю его на responseText, он возвращает XML-файл в строке, поэтому это говорит мне, что .js может получать xml-файл со стороны сервера.AJAX: responseXML возвращает null, но ResponseText возвращает XML как строку


cart.js

if (window.XMLHttpRequest) 
{ 
    xHRObject = new XMLHttpRequest(); 
} 

else if (window.ActiveXObject) 
{ 
    xHRObject = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

function loadDoc() 
{ 

    xHRObject.open("GET", "cart.php", true); 


    xHRObject.onreadystatechange = function() 
    {  
    if (xHRObject.readyState == 4 && xHRObject.status == 200) 
    {   
    myFunction(xHRObject); 
    } 

    } 

    xHRObject.send(); 
} 

function myFunction(xml) 
{ 
    var xmlDoc = xml.responseXML; 

    alert(xmlDoc); 

... 

} 

cart.php

<?php 

header('Content-Type: text/xml'); 

$xmlFile = "cart.xml"; 

    $doc = new DOMDocument(); 
    $doc->load($xmlFile); 

    $strXml = $doc->saveXML(); 
    echo $strXml; 


?> 

Надежда кто-то здесь может помочь мне, как я искать эту проблему в Интернете, но не смог найти решение. Я также пробовал разобрать ответ. Текст:

var parser = new DOMParser(); 
var xmlDoc = parser.parseFromString(XHR.responseText, "text/xml"); 

но он никогда не сможет вернуть узлы.

Любая помощь будет оценена!

Спасибо

Решение: была пустая строка в верхней части PHP файла

+1

Есть ли причина не использовать известную библиотеку, такую ​​как [jquery] (http://api.jquery.com/jquery.ajax/) для запросов ajax? – Jan

+1

Очевидно, что ответ не может быть проанализирован как XML. Проверьте наличие дополнительного вывода в вашем скрипте. – hindmost

+0

@hindmost omg, вы правы. у моего php-файла была 1 пустая строка наверху (до WonderfulWonder

ответ

0

Проблема заключалась в том, что PHP файл имел пустую строку в верхней части. Придется удалить его, чтобы не было распечатано лишнее (ненужное) содержимое.

Смежные вопросы