我正在使用jQuery Ajax从服务器检索XML文档,然后我想将其转换为HTML并注入浏览器DOM。我正在使用dataType:'xml'检索它,因此它被包装为XML文档而不是HTML。这允许我在插入之前进行我想要的操作。
但是,我找不到将操作的xml插入DOM的方法:
$('#myContainer').append(myXML)
在IE中导致安全违规,并且在Firefox中没有效果,而
$('#myContainer').append(myXML[0].xml)
适用于IE但不适用于Firefox(xml属性似乎是非标准的)
myXML.text()
仅返回XML中的文本节点,而不返回标记,而myXML.html()
返回null。
我也尝试将其作为文本检索,这允许我创建一个“标准”jQuery对象,它插入就好了。但是,我有以下几种情况:
<div><input type='checkbox'><otherElement/></input></div>
并希望根据input
的内容修改otherElement
元素。如果我将原始xml恢复为文本,jQuery会将其缩小为
<div><input type='checkbox'><otherElement/></div>
因此otherElement
的父元素是div
而不是input
,因此输入元素的操作不可靠。如果我将其检索为html,也会出现同样的情况。
任何建议都非常感谢。
答案 0 :(得分:2)
解决方案是使用'dataType':'text'加载它,然后使用$ parseXML创建jQuery对象。这样可以保留标记,并且可以将结果对象中的节点插入到DOM中。
答案 1 :(得分:0)
我会将其作为html进行检索,操作它,然后将其附加到DOM:
<script type="text/javascript">
$.ajax({"url":"/ajax.whatever",
"dataType":"html",
"success":function(data) {
var html = $(data);
// modify html as a jquery object
// ...
$("#myContainer").append(html);
}
} );
</script>