jquery .html()不适用于ie8

时间:2010-06-23 22:12:32

标签: jquery jquery-selectors

我有一个jquery函数,它对Web服务器上的webservice方法进行ajax调用,该方法返回一个带有数据的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 个答案:

答案 0 :(得分:10)

您可以在分配html()

之前提醒您的回复

OR

您可以使用innerHTML属性而不是jquery的html()(尽管它是相同的)

您可能想查看this链接

答案 1 :(得分:8)

似乎IE8在使用jQuery的html()插入长文本字符时出现问题,使div的内容完全空白。 只是尝试了一个很长的字符串和一个只包含'blah'的字符串,这就完全不同了。

因此,如果您期望非常大量的文本(例如2k +字符),那么请使用本机innerHTML。 没有做进一步的研究,所以我不知道在IE8中通过html()传递的字符串的最大长度是多少。

答案 2 :(得分:0)

您是否尝试将data.d[1]设置为变量然后添加?

例如:

if (data.d[0] == "true") {
     var results = data.d[1];
     $("#dvProudctInstruction").html(results);
}

答案 3 :(得分:0)

无论是.html()无效还是其他东西,请先检查一下。发出警报,看看你是否得到了正确的,预期的HTML。

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

很可能来自data.d [1]的html包含错误,IE无法解决它。

答案 4 :(得分:0)

只是一种直觉,但你确定你完全进入了if-block吗?我只想问自己偶然发现了真实与“真实”两次......

尝试:

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

可能不是什么,但至少你会消除你从不运行你突出显示的代码行的可能性。

答案 5 :(得分:0)

我在link上回答了这个问题 你只需要将代码改为像这样

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

答案 6 :(得分:0)

我知道这是一个迟到的答案;但您也可以使用try / catch块修复它。有时您可能无法完全控制内容。

这样您可以保留原始代码适用于新浏览器,而catch运行IE8的innerHTML。

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

希望这有助于某人!