Я использую раскрывающиеся списки стран и штатов в своей форме. Всякий раз, когда пользователь выбирает страну в раскрывающемся списке, соответствующие штаты страны будут отображаться в раскрывающемся списке штатов. Я заполняю состояния в раскрывающемся списке с помощью вызова AJAX. Проблема в том, что состояния заполняются в Mozilla, но в IE это не работает. Я предполагаю, что в jQuery есть проблема при загрузке состояний в раскрывающемся списке состояний. Код jQuery, который я использую,
$('select#edit-country').change(function(e) {
$.getJSON("loadContactUsStates",{id: $(this).val(), ajax: 'true'}, function(j){
var options = '';
for (var i = 0; i < j.length; i++) {
options += '<option value = "' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
}
<!-----I guess the problem is with the below line------------------>
$("select#edit-state").html(options);
})//end json
});

Попробуйте использовать добавить вместо метода html, как подробно описано в этом Почта.
редактировать
Собственно, я сам столкнулся с этой проблемой. Для меня ответ заключался в том, чтобы сначала вызвать пустой, затем добавить, который имеет тот же эффект (я думаю?), Что и использование метода html.
Должен, но посмотрите мой пост про поломку 1.4.2.
Также обратите внимание, что если вы используете префикс tagName в своем селекторе, это медленнее, чем просто использование идентификатора.
В вашем случае просто используйте $("#edit-state").append(options)
Я столкнулся с той же проблемой, и ни одно из предложенных исправлений не помогло. Оказывается, причиной были символы табуляции в переданной строке. Как только я удалил их все, и html (), и append () работали нормально. Думаю, для IE .. hmpf нет форматированных строк.
Убедитесь, что любой код JavaScript в возвращаемых данных синтаксически правильный.
У меня был объект параметров JSON с конечной запятой, и этого было достаточно, чтобы IE отказался его запускать.
Также (в моем случае) проверьте, есть ли у вас действительный html, у меня были несовпадающие теги, и он работал в firefox, а не в IE (6-8)
У меня была та же проблема, странно, что незакрытый тег заставлял IE игнорировать весь контент.
То же самое ... У меня был тип в одном из моих тегов <option>, и это доставило мне около 2 часов страданий.
В моем случае возвращаемые данные тоже должны быть синтаксически правильными. У меня были несогласованные теги, например, незакрытые теги
или .. и т. д.
проверьте правильность всех данных
Если это запрос ajax, то быстрый способ отладки - добавить текстовую область за пределами области, которую вы заполняете, и заполнить текстовую область возвращенными данными. затем проверьте эти данные на наличие несоответствий. Jquery.html отлично работает с IE
В IE8 перейдите в инструменты-> настройки интернета-> затем выберите вкладку передовой. Затем нажмите сброс настроек, чтобы сбросить все настройки Internet Explorer.
Я думал, что у меня проблема с кодом, но проблема была в IE8. Это сработало.
Удачи и надеюсь, что это поможет.
Вы используете 1.4.2? Возникла проблема с методом cleanData, использующим недопустимые записи кеша в IE. Ошибка и соответствующее исправление можно найти в здесь. Это влияет на звонки на .html().
есть идеи, как обойти это без обновления до новой версии jQuery?
Ага. Просто измените библиотеку jQuery, включив в нее строку, которую я там разместил.
Если вы разбираете xml с помощью jquery и вам нужен html () в IE, попробуйте следующее:
var content = ($ .browser.msie)? $ (это) .context.xml: $ (это) .html ();
Это решило мою проблему. Надеюсь, это кому-то тоже поможет.
Привет.
У меня была такая же проблема после получения HTML-запроса AJAX с функцией jQuery.ajax (), а затем попытки проанализировать результат с помощью jQuery (html_result_data). Решение заключалось в том, чтобы удалить заголовок и все вкладки и «возвраты» в html_result_data следующим образом:
success: function( data ) {
// God this is ugly
data = data.split("<body>")[1].split("</body>")[0];
data = data.split("\t").join("").split("\r").join("").split("\n").join("");
data = jQuery( data );
...
}
После нескольких часов разочарования я понял, что IE не поддерживает функции атрибута jquery для элементов html5, кроме div. Я пытался это сделать:
success: function (response, textStatus, XMLHttpRequest) {
$response = $(response.replace(/\t/g, " "));
$responseHTML = $response.find("#pageContainer").html();
$container.html($responseHTML);
Для этого элемента:
<nav id = "pageContainer" class = "content">
</nav>
Изменив его на это, он решил проблему:
<nav>
<div id = "pageContainer" class = "content">
</div>
</nav>
Вот что у меня сработало: (я тестировал IE7 - IE9 и Chrome)
Похоже, что уловка для IE заключается в использовании оболочки DIV
Исходный HTML:
<div id = "dynamicMenu"></div>
скрипт jQuery:
$.ajax({
url: "/myapp/myajaxUrl.jsp",
type: "GET",
dataType: "html",
async: false,
success: function(msg) {
$("#dynamicMenu").html(msg);
});
Где msg выглядит примерно так:
<TABLE>
<TBODY>
<TR>
<TD><LABEL for = "dropdown1">OS type:</LABEL></TD>
<TD>
<SELECT id = "dropdown1">
<OPTION selected value = "">Select OS</OPTION>
<OPTION value = "WIN">Windoze</OPTION>
<OPTION value = "UX">Unix</OPTION>
<OPTION value = "LX">Linux</OPTION>
</SELECT>
</TD>
</TR>
</TBODY>
</TABLE>
Я пробовал .empty () .html () безрезультатно, но все вышеперечисленное отлично сработало!
Я столкнулся с той же проблемой, когда html не работает в IE.
Я считаю, что это не сработает, если у вас недействительный html
Пример:
В моем случае я использую div без закрывающего тега. Таким образом, недопустимый html может быть виновником IE
Комментарий Юкумса побудил меня попробовать отключить вывод отладки ColdFusion, и затем .html () работал у меня в IE8. Чтобы отключить вывод отладки:
<cfsetting showdebugoutput = "No">
В моем случае это было так просто, как изменить версию jquery. Я использовал jquery-1.3.2 и добавил эту строку
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"> </script>
вместо импорта jquery-1.3.2. Не меняя ничего в исходном коде, функция .prepend отлично работает в IE, FF и Chrome.
Поскольку решение здесь не упоминается: У меня была такая же проблема в IE8 при активации режима совместимости. Решением было передать объект jQuery функции .html () следующим образом:
$("select#edit-state").html($(options));
Это не было проблемой, если параметры были объектом jQuery и также были созданы как один. Но в приведенном выше примере это должно помочь - по крайней мере, для меня.
добавить в параметры .ajax
кеш: ложь,
У меня была такая же проблема, и я обнаружил, что самым простым решением было использование функции replaceWith().
Следующий метод решил проблему для меня:
$('Element ID OR Class').empty().html(string);
Сначала используйте empty(), а затем установите html с помощью html()
Да, у меня тоже сработало. единственная проблема была с IE, и этот метод решил ее.
У меня возникла проблема с IE, используя это:
$('#valor_total').html(valor_total);
где id имел то же имя, что и переменная, переданная в качестве параметра. Смена идентификатора сработала хорошо:
$('#div_valor_total').html(valor_total);
Для меня я мог заставить его работать, только поместив свой выбор в заполнитель div, а затем записав через .html (); весь оператор к этому div. Работает полностью.
В моем случае мне пришлось изменить селектор, который был тегом <figure>. Вот что у меня было:
HTML:
<figure id = "imagen">...</figure>
JS (не работает):
$("#imagen").html(res);
И мне пришлось заменить на:
HTML:
<div id = "imagen">...</div>
JS (оно работает!):
$("#imagen").html(res);
В моем случае проблема заключалась в том, как я комментировал свой javascript в загружаемых данных.
// Works fine
/* Works fine */
<!-- This causes a syntax error in IE -->
У меня никогда раньше не было проблем с таким комментарием в IE, только при использовании ajax для загрузки его на существующую страницу. Нет проблем и с другими браузерами.
Добавление атрибута no cache к контроллеру исправило это для меня.
Скопировано из этого ответа: https://stackoverflow.com/a/12948321/1389589
возможный дубликат Почему IE не добавляет <option> в мой выпадающий список?