jQuery的.html()在IE8上不起作用。

16

我有一个jQuery函数,它通过AJAX调用Web服务器上的Web服务方法,该方法返回一个带有数据的HTML表格。 我正在使用.html()将返回值呈现在div上。 这在Firefox,Chrome,Safari中有效,但在IE8中不起作用。

$.ajax({
    type: "POST",
    url: "./../WebAjaxCalls.asmx/GetProductInstruction",
    data: "{'ProductID':'" + $("#txtProductID").val()  + "'}",
    success: function(data) {
        if (data.d[0] == "true") {
            **$("#dvProudctInstruction").html(data.d[1]);** 
        }
    },
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    error: function(e, textStatus, errorThrown) {
        bReturn = false;
    }
});  

这一行 $("#dvProudctInstruction").html(data.d[1]); 在除IE8之外的所有浏览器中均有效。

非常感谢任何帮助。

7个回答

10

在使用html()之前,您可以先提醒您的响应。

或者

您可以使用innerHTML属性来替代jquery的html()(虽然它们相同)

您可能需要检查此链接:这里


3
感谢提供链接,并且在我的情况下解决了IE8的问题(问题是由于错误标记引起的!)。它说明:“在IE中,jQuery的.html()属性似乎只会替换第一个符合条件的元素的内容,除非新的HTML是有效的。” - javigzz

8

看起来IE8在使用jQuery的html()插入长字符串时会出现问题,导致div内容完全为空。 我尝试了一个非常长的字符串和一个只包含“blah”的字符串,结果差别很大。

所以如果你期望插入非常大的文本块(比如超过2k个字符),最好使用内置的innerHTML。 我没有进行进一步的研究,所以不知道在IE8中通过html()传递的字符串的最大长度是多少。


0
你尝试过将data.d[1]设置为一个变量,然后再进行加法运算吗?
例如:
if (data.d[0] == "true") {
     var results = data.d[1];
     $("#dvProudctInstruction").html(results);
}

0
无论是 .html() 不起作用还是其他问题,请先检查它。放置一个警报并查看您是否获得了正确的预期 HTML。
alert(data.d[1]);
$("#dvProudctInstruction").html(data.d[1]);

很可能data.d [1]中传入的HTML包含错误,因此IE无法解析它。


0

只是一种直觉,但你确定你真的进入了if块吗?我只是问一下,因为我自己也曾经在true与"true"之间犯过几次错误...

试试:

success: function(data) {
    alert('outside of if');
    if (data.d[0] == "true") {
        alert(data.d[1]);
        $("#dvProudctInstruction").html(data.d[1]);
    }
}

可能没有什么问题,但至少你可以排除你从未运行过所突出显示的代码行的可能性。


0

我已经在link上回答了这个问题,你只需要将你的代码改成这样

$("#dvProudctInstruction").html(data.d[1].toString());

0

我知道这里回答有点晚了,但你也可以用try/catch语句块来修复。有时候你可能无法完全控制内容。

这样做可以让原始代码在新浏览器上正常工作,而在IE8中则运行innerHTML的catch部分。

try {
    //new browsers
    $('#dvProudctInstruction').html(data.d[1]);
} catch (e) {
    //IE8
    $('#dvProudctInstruction').innerHTML = data.d[1];
}

希望这能帮助到某个人!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接