2010-06-23 150 views
16

我有一个jQuery的函数,它可以对web服务器上的webservice方法进行ajax调用,该方法返回一个包含数据的html表。我使用.html()来呈现div上的返回值。这个工程在火狐,Chrome,Safari浏览器,但是,IE8jquery .html()不能在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以外的所有浏览器。

对此的任何帮助将不胜感激。

回答

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]中包含错误,IE无法解析它。

10

你可以分配给它的HTML()之前提醒您回应

OR

您可以使用jQuery的文字属性,而不是HTML()(虽然它是相同的)

,你可能要检查this链接

+3

+1链接。在我的情况下工作与IE8的问题(这个问题变成了坏标记!)。它说:_在IE中,事实证明,jQuery .html()属性不会替换第一个匹配元素的内容,除非新的HTML有效_ – javigzz 2013-05-07 10:00:29

0

只是一个直觉,但你确定你是否输入了if-block?我只是在问真与“真”了几次,我已经迷迷糊糊......

尝试:

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

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

8

看来IE8在使用jQuery的html()插入长文本字符串时遇到问题,使得div的内容完全变为空白。 只用一个很长的字符串和一个只包含'blah'的字符串来尝试它,这使所有的区别。

所以,如果你期望非常大的文本夹(如2k +字符),去为本地innerHTML。 没有做任何进一步的研究,所以我不知道在IE8中通过html()传递的字符串的最大长度是多少。

+2

这很棒,完全正确。奇怪的错误。 – 2014-03-26 15:24:36

+0

这救了我的命,谢谢! – user2968356 2015-07-28 07:19:31

0

我对link 你只需要改变你的代码是这样

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

我知道这是一个迟到的回答位回答了这个问题;但你也可以用try/catch块来修复它。有时候你可能没有完全控制内容。

通过这种方式,您可以使原始代码适用于新浏览器,而catch则可以运行IE8的innerHTML。

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

希望这可以帮助别人!