Я пытаюсь получить 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 файла
Есть ли причина не использовать известную библиотеку, такую как [jquery] (http://api.jquery.com/jquery.ajax/) для запросов ajax? – Jan
Очевидно, что ответ не может быть проанализирован как XML. Проверьте наличие дополнительного вывода в вашем скрипте. – hindmost
@hindmost omg, вы правы. у моего php-файла была 1 пустая строка наверху (до php). Спасибо!! Я потратил часы на это, и вы сделали свой день – WonderfulWonder