1

我正在使用这段代码:

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:为 $(data).find("#div_list") 使用 console.log 给出

[div, prevObject: st.fn.st.init[1], context: document, selector: "#div_list", jquery: "1.9.0", constructor: function…]

此外,将数据类型更改为“html”也无济于事。

4

3 回答 3

0

我得到了同样的例外,但在我的情况下,我使用的是来自 jquery 的 xml 解析,我想要的是从解析中获取字符串来更新文件/字符串。

$(xmlParsed).find(selector).text(value);
$root = $(xmlParsed).find('root');

异常出现在哪里:

$root.html()

它的工作方式是:

xmlFile = (new XMLSerializer()).serializeToString($root.context)
于 2013-12-18T01:00:09.547 回答
0

好的,所以我想出了一个简单的方法来做我想做的事。

我发现使用 jquery 的 $.load() 方法将所有内容解析为 HTML。这样,即使在 Chrome 中没有为 XML 定义 InnerHTML(我认为这是代码在 chrome 中不起作用的原因),它仍然有效。

于 2013-08-10T11:17:46.817 回答
0

将类选择器更改为 ID 选择器对我有用。不知道原因。

前任。

<div class="abc"></div> to <div id="abc"></div>
于 2016-04-11T10:48:06.593 回答