Подтвердить что ты не робот

Jquery.html() не работает на ie8

У меня есть функция 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.

Любая помощь по этому поводу будет высоко оценена.

4b9b3361

Ответ 1

Вы можете предупредить свой ответ, прежде чем назначать его html()

ИЛИ

Вы можете использовать свойство innerHTML вместо html() jquery (хотя оно такое же)

И вы можете проверить эту ссылку

Ответ 2

Кажется, у IE8 проблемы с вставкой длинных строк текста с помощью jQuery html(), что делает содержимое div просто незаполненным. Просто попробовал его как с очень длинной строкой, так и с одним "бла", и это имело значение.

Итак, если вы ожидаете очень больших патронов текста (например, 2k + символов), перейдите на нативный innerHTML. Не делал никаких дальнейших исследований, поэтому я не знаю, какая максимальная длина строки передается через html() в IE8.

Ответ 3

Вы пытались установить data.d[1] на переменную и затем добавить ее?

Пример:

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

Ответ 4

Не работает ли его .html(), или что-то еще, сначала проверьте его. Поставьте предупреждение и убедитесь, что вы получили правильный, ожидаемый html или нет.

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

Скорее всего, html, входящий в data.d [1], содержит ошибку, и IE не может ее решить.

Ответ 5

Просто ощущение кишки, но вы уверены, что входите в if-блок? Я просто прошу, чтобы пару раз наткнулся на истину против "истины"...

Попробуйте:

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

Не может быть ничего, но, по крайней мере, вы исключили бы вероятность того, что вы просто никогда не запустите выделенную строку кода.

Ответ 6

Я ответил на эту проблему на ссылке вам просто нужно изменить свой код, чтобы быть таким

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

Ответ 7

Я знаю, это немного позднего ответа; но вы также можете исправить это с помощью блока try/catch. Иногда вы можете не контролировать весь контент.

Таким образом, вы сохраняете исходный код для новых браузеров, а catch выполняет innerHTML для IE8.

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

Надеюсь, это поможет кому-то!