jquery .html () не работает на ie8 - PullRequest
16 голосов
/ 24 июня 2010

У меня есть функция jquery, которая выполняет 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.

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

Ответы [ 7 ]

10 голосов
/ 17 сентября 2011

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

OR

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

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

8 голосов
/ 22 марта 2012

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

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

0 голосов
/ 11 декабря 2014

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

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

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

Hopeэто кому-то помогает!

0 голосов
/ 25 мая 2014

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

$("#dvProudctInstruction").html(data.d[1].toString());
0 голосов
/ 29 декабря 2011

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

Попробуйте:

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

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

0 голосов
/ 17 сентября 2011

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

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

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

0 голосов
/ 09 июля 2011

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

Например:

if (data.d[0] == "true") {
     var results = data.d[1];
     $("#dvProudctInstruction").html(results);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...