JavaScript XML解析在IE中工作,但在Firefox / Chrome中不起作用
JavaScript XML Parsing Works in IE but not in Firefox/Chrome
我在XML解析方面有以下问题,我的脚本在IE中工作,但在Firefox/Chrome中不起作用(这很奇怪)。当然,这是我正在做的事情,但非常感谢任何帮助。
以下 JavaScript 函数:
this.displayData = function(xml)
{
var table = document.createElement("table"); // table for results
table.border=0;
table.width="100%";
table.classname="requestList";
var container = document.getElementById('mainright');
if (container.hasChildNodes())
{
while(container.childNodes.length >= 1)
container.removeChild(container.firstChild);
}
container.appendChild(table);
var entities = xml.getElementsByTagName("entity");
for (var i=0; i<entities.length; ++i)
{
var entity = entities[i];
var row = table.insertRow(table.getElementsByTagName("tr").length);
var fields = entity.getElementsByTagName("field");
for (var z=0; z<fields.length; ++z)
{
var cell = row.insertCell(z);
cell.innerHTML = "("+fields[z].childNodes[0].nodeValue+")";
}
}
}
正在作为 xmlhttp 回调调用,并且 XML 似乎有效。XML 输出的示例:
<data-list>
<entity entity="">
<field field="requestid">
<![CDATA[ 1 ]]>
</field>
<field field="customer">
<![CDATA[ 1 ]]>
</field>
<field field="assignteam">
<![CDATA[ 0 ]]>
</field>
<field field="assignuser">
<![CDATA[ admin ]]>
</field>
<field field="class">
<![CDATA[ 1 ]]>
</field>
<field field="openeddt">
<![CDATA[ 2012-06-11 19:39:26 ]]>
</field>
<field field="status">
<![CDATA[ 1 ]]>
</field>
</entity>
<entity entity="">
<field field="requestid">
<![CDATA[ 2 ]]>
</field>
<field field="customer">
<![CDATA[ 1 ]]>
</field>
<field field="assignteam">
<![CDATA[ 0 ]]>
</field>
<field field="assignuser">
<![CDATA[ admin ]]>
</field>
<field field="class">
<![CDATA[ 1 ]]>
</field>
<field field="openeddt">
<![CDATA[ 2012-06-11 19:40:02 ]]>
</field>
<field field="status">
<![CDATA[ 1 ]]>
</field>
</entity>
</data-list>
在IE中,当我发出请求时,它会在新创建的表中显示数据,每个实体一行,每个字段一列。
但是,在Firefox和Chrome中,请求被称为fine并且不会产生任何错误,但是空字符串作为nodeValues返回,例如,我得到的只是(正确数量的)行和列中的()。
我敢肯定我只是真的很愚蠢。任何帮助非常感谢。
干杯
戴夫。
**我希望回答,但我无法再回答自己的问题7个小时**
就在问完一分钟后,我似乎偶然发现了答案......
文本内容
这似乎是Firefox和Chrome中用于文本数据的属性(我假设是因为它包含在CDATA标签中)。但是,将代码更改为字段[z].textContent会破坏IE。
所以我做了以下工作:
var data = (fields[z].textContent == undefined) ? fields[z].firstChild.nodeValue : fields[z].textContent;
cell.innerHTML = data;
这似乎在两者中都工作正常。
但我欢迎任何"适当的"解决方案。
干杯
戴夫。
这被证明是一个标头问题 - 愚蠢的是,我没有将 XML 生成中的输出标头设置为 text/xml。虽然IE并不在乎FF和Chrome。
在 PHP 中设置 Content-type 标头解决了这个问题。
相关文章:
- 滚动在Chrome中有效,但在Firefox或IE中无效
- jQuery自动完成在Firefox中运行良好,但在Chrome中则不然
- 为什么这个按钮在IE中有效,但在Firefox中无效
- HTML选择,在DOM中选择了正确的选项,但在firefox中显示了错误的项目
- Ajax调用在InternetExplorer中冻结UI,但在firefox中运行良好
- Javascript下载在firefox中停止,但在Chrome中有效
- 以下颜色更改功能在IE9和Firefox中运行良好,但在早期的IE或Chrome中则不然
- JavaScript函数在Safari中有效,但在Firefox中找不到
- Javascript'元素'在ie中未定义,但在chrome和firefox中运行良好
- javascript代码,用于删除firefox中的空白,但在IE和chrome中无法正常工作
- jQuery代码在Firefox中工作,但在IE中失败
- 在Firefox中工作正常,但在Chrome中不能
- Javascript键码在Firefox中不起作用,但在chrome中运行良好
- 输入类型的图像在Internet Explorer中不起作用,但在Chrome和Firefox中起作用
- 聚合物准备在IE11上启动,但在Firefox或Chrome上不启动
- 使用量角器双击在chrome中效果良好,但在firefox中不起作用
- Jquery.hide()和.show()在firefox上运行速度较慢,但在chrome上运行良好
- 禁用字段在IE中有效,但在Firefox中无效
- 在getJSON之后构建HTML在Safari中有效,但在Chrome或Firefox中无效
- 为什么对img标记的前向引用在Chrome上失败,但在FireFox和IE上有效