我正在使用此代码:
function updateList(searchStr){
$.ajax(getSearchURL(true) + searchStr).done(function(data) {
$("#div_list").html($(data).find("#div_list").html());
});
};
用新数据更新我的div #div_list。
当我在FF中这样做时,它完美无缺。但是,在chrome中,它在控制台中失败并显示以下消息:
Uncaught TypeError: Cannot call method 'replace' of undefined
我将代码分为2,如下:
function updateList(searchStr){
$.ajax(getSearchURL(true) + searchStr).done(function(data) {
var test = $(data).find("#div_list").html();
$("#div_list").html(test);
});
};
Chrome告诉我var测试线是错误的。
玩了一下之后,我发现了
$(data).find("#div_list")
确实已定义,因为此处的警报将给出[object Object]
所以我说,地狱,我只会使用普通的非jquery方法然后尝试:
function updateList(searchStr){
$.ajax(getSearchURL(true) + searchStr).done(function(data) {
$("#div_list").html($(data).find("#div_list")[0].innerHTML);
});
};
这也失败了,具有相同的TypeError。
有人能指出我正确的方向吗?
非常感谢。
编辑:答案示例
<?xml version="1.0" encoding="UTF-8"?>
<html>
<div version="2.0" id="div_list">
<script type="text/javascript">
dojo.require('dijit.TitlePane');
</script>
<div id="XXX">
<table>
<thead>
<tr>//Some rows
</tr>
</thead>
<tr>More rows with data
</tr>
<tr class="footer">
<td colspan="7"><span class="new"><a href="/items?form"><img title="Create new Item"
src="/resources/images/add.png" alt="Create new Item" /></a></span></td>
</tr>
</table>
</div>
</div>
</html>
EDIT2:使用console.log获取$(数据).find(“#div_list”)赋予
[div, prevObject: st.fn.st.init[1], context: document, selector: "#div_list", jquery: "1.9.0", constructor: function…]
此外,将数据类型更改为“html”不会做任何事情。
答案 0 :(得分:0)
好的,所以我想出了一个简单的方法来做我想做的事。
我发现使用jquery的$ .load()方法将所有内容都解析为HTML。这样,即使没有为Chrome中的XML定义InnerHTML(我认为代码不能在chrome中工作的原因),它仍然有效。
答案 1 :(得分:0)
我得到了相同的异常,但在我的情况下,我使用了jquery的xml解析,我想要的是从解析中获取String以更新文件/字符串。
$(xmlParsed).find(selector).text(value);
$root = $(xmlParsed).find('root');
异常出现在:
$root.html()
它的工作方式是:
xmlFile = (new XMLSerializer()).serializeToString($root.context)