AJAX: responseXML返回null,而ResponseText返回XML作为字符串

AJAX: responseXML returning null however ResponseText returns the XML as a string

本文关键字:返回 XML 字符串 ResponseText responseXML null AJAX      更新时间:2023-09-26

我试图从服务器端(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文件的顶部有空白行

问题是php文件在顶部有一个空白行。必须删除它,这样就不会打印出额外的(不必要的)内容。