2010-06-23 5 views
16

У меня есть функция jquery, которая делает вызов ajax методу webservice на веб-сервере, метод возвращает таблицу html с данными. Я использую .html() для отображения возвращаемых значений в div. Это работает в Firefox, Chrome, Safari, но не работает на IE8jquery .html() не работает на 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

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

Для примера:

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

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

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

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

10

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

ИЛИ

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

И вы можете проверить this link

+3

+1 для связи. работал в моем случае для выпуска с IE8 (проблема стала плохой разметкой!). он говорит: _In IE получается, что атрибут jQuery .html() не будет заменять содержимое первого совпадающего элемента, если только новый HTML не является действительным_ – javigzz

0

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

Try:

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

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

8

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

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

+2

Это значит, что это правильно. Странная ошибка. –

+0

Это спасло мою жизнь, спасибо! – user2968356

0

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

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

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

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

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

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

Смежные вопросы