Div контент, загруженный через ajax, не появляется в IE - PullRequest
0 голосов
/ 03 августа 2011

Вот вызов ajax:

function loadContent( url ) {
 jQuery.ajax({
        url: url,
        success: function(data) 
        {           
          // set content
          jQuery("#overlayDiv").html(data);

          // hide loading spinner
          jQuery("#overlayCleared").hide();          
        }
      });
}

Отлично работает во всех других браузерах, кроме IE, в котором div остается пустым .. :(

Я использую CSS:

div#overlayDiv {
    overflow: auto;
    position: relative;
    height: 95%;
}
div.video_overlay { /* this class will be added to the div using jQuery */
    padding-left: 0px;
    width: inherit;
    top: 35px;  
}

Что я могу с этим поделать?

Большое спасибо

Ответы [ 3 ]

1 голос
/ 25 августа 2011

На самом деле, существует также вероятность того, что вы столкнулись с проблемой кеширования IE Ajax, когда IE стремится кешировать результаты запросов GET. Смотри http://ajaxian.com/archives/ajax-ie-caching-issue.

Решение состоит в том, чтобы использовать POST (Примечание: JQuery по умолчанию равен GET)

0 голосов
/ 27 октября 2015

Я решил ту же самую проблему для большого приложения HTML5, которое требовало совместимости с IE8.HTML-код, возвращаемый вызовами Ajax, является довольно сложным и включает в себя теги SCRIPT с большим количеством JQuery и автономного кода JavaScript.

Помимо хорошо известной проблемы с кэшированием IE (и некоторых других), ключом к этой проблеме являетсяIE очень требователен во время загрузки динамического HTML-контента в любой элемент, в моем случае это был DIV.IE не только требователен, но и демонстрирует своего рода случайное поведение, такое как рендеринг части возвращаемого HTML или вообще ничего, без какой-либо очевидной связи между частично визуализированным HTML и наконец обнаруженной проблемой кодирования.

Кроме тогоон вообще не выдает ошибок в кодировании HTML, что делает его настоящим испытанием для отладки такого рода сценариев.В моем случае у меня не было выбора, кроме как вернуться к методам отладки 90-х годов.Я взял возвращенный HTML-код из Chrome, скопировав код узла в виде проверки этого браузера, поместил его в плоский файл .html и использовал этот код на стороне сервера для чтения кода из плоского файла.

    $myfile = fopen("flatfile.html", "r") or die("Unable to open the file");
    echo fread($myfile,filesize("flatfile.html"));
    fclose($myfile);

С этого момента используйте возвращенный код и вводите его в объект контейнера, начните с деления его на две части (позволяя каждой части быть самостоятельным фрагментом кода), посмотрите, какая часть этих двух визуализируется, а какая нет.и так далее с каждой частью до тех пор, пока вы не найдете нарушающий код.

Важно отметить, что IE8 будет работать независимо от того, насколько сложным является смешивание HTML и Javascript, вам просто нужно мучительно отлаживать код,Если я скажу так, то это потому, что вы найдете много сообщений о том, что IE7,8 не может обработать сложный код, возвращенный Ajax, или что свойство JQuery .html () не будет работать в таких случаях.Это неправда, не торопитесь, и вы поймете, где ваша проблема, не сдавайтесь.

0 голосов
/ 04 августа 2011

Я столкнулся с той же проблемой пару дней назад, и я просто внес это изменение, и это решило проблему.

(* Учитывая URL-адреса на localhost), убедитесь, что ваш URL-адрес указывает на 127.0.0.1при тестировании, например,

используйте ------> http://127.0.0.1/ вместо ----> http://localhost/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...