【发布时间】:2015-10-19 07:47:30
【问题描述】:
我正在尝试从服务器端 (PHP) 检索 XML 文件,然后将其发送到客户端 (JavaScript)。我遇到的问题是 responseXML 一直返回 null。但是,如果我将其更改为 responseText,它会以字符串形式返回 xml 文件,因此这告诉我 .js 可以从服务器端接收 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 文件顶部有空行
【问题讨论】:
-
是否有理由不使用jquery 等知名库来处理ajax 请求?
-
显然响应无法解析为 XML。检查脚本中的任何额外输出。
-
@hindmost 天哪,你是对的。我的 php 文件顶部有 1 个空行(在
标签: javascript php ajax xml