【问题标题】:parsing responseXML in Ajax在 Ajax 中解析 responseXML
【发布时间】:2021-04-10 00:07:15
【问题描述】:

我正在尝试调试一个使用 Ajax 发送 SQL 查询并将结果解析为 XML 的 Web 应用程序,但我遇到了多个问题。首先,responseXML 返回为 null,即使 responseText 看起来像有效的 XML。

这是创建我的 XML 响应的 PHP 代码:

$d = new DomDocument('1.0');
$d->formatOutput = true;

$res = $d->appendChild($d->createElement('response'));

foreach($results as $id => $options) {
    $sel = $res->appendChild($d->createElement('select'));
    $sel->setAttribute('id', $id);

    foreach ($options as $option => $value) {
       $op = $sel->appendChild($d->createElement('option',htmlentities($option)));
       $op->setAttribute('value', $value);
  }
}
header('Content-type: text/xml');
echo $d->saveXML($d)."\n";

这就是 responseText 中返回的内容:

<?xml version="1.0" encoding="UTF-8"?>
<response>
<select id="CruiseSelect">
<option value=" ">All Cruises</option>
<option value="0507NH">0507NH</option>
<option value="0511NH">0511NH</option>
<option value="0602JD">0602JD</option>
<option value="0604NH">0604NH</option>
<option value="0607NH">0607NH</option>
</select>
</response>

我找不到修复 responseXML 的方法,但我想我找到了这样的解决方法:

var xmldoc;
    try{
       xmldoc = parser.parseFromString(test, "text/xml");
    } catch (e){
            alert('XML parsing error');
    }
    var selects = xmldoc.getElementsByTagName('select');

一开始这似乎可行,但是当我尝试继续进行时,我发现选择的长度为0,并且无法从中获取选项值。我在这里错过了一些非常明显的东西吗?我的 XML 有什么问题?

【问题讨论】:

    标签: php ajax xml


    【解决方案1】:

    嗯,我找到了答案,哇,真是烦人。

    我意识到我的 echo->$d->saveXML($d) 命令在它返回给 Ajax 的 XML 字符串的开头添加了一个无关的换行符。进一步的研究表明,其他人也有类似的问题。按照他们的建议,我浏览了代码中的每个 php 文件,并删除了文件末尾的所有空白行或空格。这解决了问题。

    【讨论】:

      猜你喜欢
      • 2011-01-20
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      • 2016-10-22
      • 2013-07-23
      • 1970-01-01
      相关资源
      最近更新 更多