AJAX:responseXML返回null但是ResponseText返回XML作为字符串
问题描述:
我试图从服务器端(PHP)检索XML文件,然后将其发送到客户端(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;
?>
希望这里有人可以帮助我,因为我已经在网上搜索这个问题,但找不到一个办法。我也尝试解析responseText:
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(XHR.responseText, "text/xml");
但它永远不能返回节点。
任何帮助将不胜感激!
谢谢
解决方案:有空白行中的PHP文件
答
顶部的问题是,PHP文件必须在顶部有一个空行。必须将其删除,以免打印出额外(不必要的)内容。
是否有理由不使用[jquery](http://api.jquery.com/jquery.ajax/)等知名库来处理ajax请求? – Jan
显然,响应不能被解析为XML。检查脚本中的任何额外输出。 – hindmost
@最后的omg,你是对的。我的php文件在顶部有一个空行(在 WonderfulWonder