Jquery ajax响应提取部分html - 在IE8中

时间:2012-12-12 10:26:54

标签: jquery ajax

我有一个返回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

2 个答案:

答案 0 :(得分: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在最后。

答案 1 :(得分:1)

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

然而,在这一行:

$('#somediv').html($('somediv' htmlResponse).html());
你的意思是:

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

编辑:

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