Ответ 1
Вы можете предупредить свой ответ, прежде чем назначать его html()
ИЛИ
Вы можете использовать свойство innerHTML вместо html() jquery (хотя оно такое же)
И вы можете проверить эту ссылку
У меня есть функция jquery, которая делает вызов ajax методу webservice на веб-сервере, метод возвращает таблицу 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 вместо html() jquery (хотя оно такое же)
И вы можете проверить эту ссылку
Кажется, у IE8 проблемы с вставкой длинных строк текста с помощью jQuery html(), что делает содержимое div просто незаполненным. Просто попробовал его как с очень длинной строкой, так и с одним "бла", и это имело значение.
Итак, если вы ожидаете очень больших патронов текста (например, 2k + символов), перейдите на нативный innerHTML. Не делал никаких дальнейших исследований, поэтому я не знаю, какая максимальная длина строки передается через html() в IE8.
Вы пытались установить 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]);
Скорее всего, html, входящий в data.d [1], содержит ошибку, и IE не может ее решить.
Просто ощущение кишки, но вы уверены, что входите в if-блок? Я просто прошу, чтобы пару раз наткнулся на истину против "истины"...
Попробуйте:
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 выполняет innerHTML для IE8.
try {
//new browsers
$('#dvProudctInstruction').html(data.d[1]);
} catch (e) {
//IE8
$('#dvProudctInstruction').innerHTML = data.d[1];
}
Надеюсь, это поможет кому-то!