1

我有一个返回 html 标记的 Ajax 函数。我需要从整个字符串中提取某个 div 并在我当前的 html 中替换相同的 div。这是代码的一部分:

$.ajax({
        type: "POST",
        url: postUrl,
        dataType: "HTML",
        data: "ddd"
        success: function(htmlResponse) {
                //replace the html code
                $('#somediv').html($('#somediv' htmlResponse).html());
            }
        },

在 Chrome 和 FF 中工作正常,而不是在 IE 8 中。IE 在 htmlResponse 中找不到 div。我试着提醒:

alert($(htmlResponse).find('#somediv').html());

并收到一条空白消息。这是 IE 中的错误,我的代码有什么问题吗?谢谢 8

4

2 回答 2

1

在您的 postUrl 中,添加“#divID”,这将只返回您正在寻找的 div。例如

var postUrl = "/something/target.htm #theDiv";
$.ajax({
    type: "POST",
    url: postUrl,
    dataType: "HTML",
    data: "ddd"
    success: function(htmlResponse) {
            //replace the html code
            $('#somediv').html($('somediv' htmlResponse).html());
        }
    },

我不记得这是否适用于 $.ajax 或 $.get,但我知道它适用于 $('#somediv').load(),这可能是一个替代方案,更短,方法:

$('#somediv').load("/something/target.htm #theDiv");

您显然可以在 URL 中插入一个查询字符串,只要 #divID 在末尾即可。

于 2012-12-12T10:34:46.900 回答
1

关于alert,我想不出为什么 IE 会中断,alert($(htmlResponse).find('#somediv').html());除非被抓取的 html() 首先只是过大/太多空格/空。

但是,在这一行:

$('#somediv').html($('somediv' htmlResponse).html());

你的意思是:

$('#somediv').html($('#somediv', htmlResponse).html());

?

编辑:

htmlResponse分析 中的 HTML并确保其格式正确可能是个好主意。也许 a<div>没有关闭,或者 IE8 遇到的其他无效语法。

于 2012-12-12T10:43:46.427 回答