jquery .html()不适用于ie8
我有一个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以外的所有浏览器。
任何有关这方面的帮助将不胜感激。
您可以在分配之前提醒您的响应html()
要么
您可以使用innerHTML属性而不是jquery的html()(虽然它是相同的)
你可能想查看这个链接
似乎IE8在使用jQuery的html()插入长字符串时出现问题,使div的内容完全空白。 只是尝试了一个很长的字符串和一个只包含’blah’的字符串,这就完全不同了。
因此,如果您期望非常大量的文本(例如2k +字符),那么请使用本机innerHTML。 没有做进一步的研究,所以我不知道在IE8中通过html()传递的字符串的最大长度是多少。
您是否尝试将data.d[1]
设置为变量然后添加它?
例如:
if (data.d[0] == "true") { var results = data.d[1]; $("#dvProudctInstruction").html(results); }
无论是.html()无效还是其他东西,请先检查一下。 发出警报,看看你是否得到了正确的,预期的HTML。
alert(data.d[1]); $("#dvProudctInstruction").html(data.d[1]);
很可能是来自data.d [1]的html包含错误,IE无法解决它。
只是一种直觉,但你确定你完全进入了if-block吗? 我只想问自己几次偶然发现真实与“真实”……
尝试:
success: function(data) { alert('outside of if'); if (data.d[0] == "true") { alert(data.d[1]); $("#dvProudctInstruction").html(data.d[1]); } }
可能不是什么,但至少你会消除你只是从不运行你突出显示的代码行的可能性。
我已经在链接上回答了这个问题,你只需要将代码更改为这样
$("#dvProudctInstruction").html(data.d[1].toString());
我知道这是一个迟到的答案; 但你也可以使用try / catch块修复它。 有时您可能无法完全控制内容。
这样,您可以保留原始代码适用于新浏览器,而catch运行IE8的innerHTML。
try { //new browsers $('#dvProudctInstruction').html(data.d[1]); } catch (e) { //IE8 $('#dvProudctInstruction').innerHTML = data.d[1]; }
希望这有助于某人!