【发布时间】: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 有什么问题?
【问题讨论】: