【问题标题】:AJAX: responseXML returning null however ResponseText returns the XML as a stringAJAX:responseXML 返回 null 但是 ResponseText 将 XML 作为字符串返回
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 2014-07-28
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多