AJAX:responseXML返回null但是ResponseText将XML作为字符串返回

时间:2015-10-19 07:47:31

标签: javascript php ajax xml

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

1 个答案:

答案 0 :(得分:0)

问题是php文件顶部有一个空行。不得不将其删除,因此不会打印出额外的(不必要的)内容。