我有一个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以外的所有浏览器。
对此的任何帮助将不胜感激。
答案 0 :(得分:10)
答案 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];
}
希望这有助于某人!