Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Не работает $("#id").load("http://...") в ИЕ8 (https://javascript.ru/forum/css-html-internet-explorer/28295-ne-rabotaet-%24-id-load-http-v-ie8.html)

Surik 14.05.2012 10:24

Не работает $("#id").load("http://...") в ИЕ8
 
Всем доброго дня!
Обращаюсь к знающим людям за помощью, так как сам не особо силен в таких вопросах. Сейчас постараюсь описать проблему максимально подробно.

На этом сайте http://podshipnikspb.ru/ реализована подгрузка последних новостей в сайдбар с помощью jQuery.
В коде HTML есть контейнер:
<div class="module" id="lastnews"></div>


Вместе со страницей загружается простенький скриптик news.js:
(function($) {
$(function() {
  $("#lastnews").load("http://podshipnikspb.ru/ajax_news.php");
})
})(jQuery)


Он подключается в секции HEAD страницы (вместе с библиотекой jQuery):
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript" src="http://podshipnikspb.ru/news.js"></script>


Пробовал подключать библиотеки других версий - не помогло. Пытался принудительно выдавать кодировку utf-8 в заголовках (перед выдачей скрипта news.js и перед самими новостями) - та же история.

Сами последние новости генерятся скриптиком http://podshipnikspb.ru/ajax_news.php, который сам по себе прекрасно работает в любом браузере.

Проблема в том, что новости в сайдбаре отображаются в ФФ, ИЕ9 (в других браузерах не проверял), а вот в ИЕ8 - ну просто ни в какую. При этом ИЕ никаких ошибок не выдает.
Если в news.js после load воткнуть alert(); - то он срабатывает.

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

Surik 14.05.2012 12:39

Сейчас попытался заменить функцию news.js вот такой конструкцией (прямо в теле страницы):
<script type="text/javascript"><!--
$('#lastnews').load('http://podshipnikspb.ru/ajax_news.php', function(response, status, xhr) {
  if (status == "error") {
    var msg = "Sorry but there was an error: ";
    $("#error").html(msg + xhr.status + " " + xhr.statusText);
  }
});//--></script>

По-прежнему работает в ФФ, но не работает в ИЕ. При этом никаких ошибок нет.

Если попытаться заменить "http://podshipnikspb.ru/ajax_news.php" на что-нибудь, чего нет на сервере, то даже в ИЕ8 выводится ошибка:
Sorry but there was an error: 404 Not Found

Даже не знаю, что еще можно проверить. У кого-нибудь есть идеи? Любые...

Surik 14.05.2012 12:57

Заменил скрипт ajax_news.php, который формирует блок новостей на простейшее:
<? echo "Новости"; ?>

Результат тот же: в файрфоксе работает, в ИЕ - нет. При этом совершенно никаких ошибок. Бред какой-то

Surik 14.05.2012 13:57

Вощем, все оказалось просто до банальности - в коде, который подгружался с помощью функции load() был лишний закрывающий </div>. Этого оказалось достаточно, чтобы все тупо переставало работать в ИЕ8. Так что если у кого-то похожая история, тщательно проверяйте структуру html
Наконец-то блин! :)

Surik 14.05.2012 14:00

Проблема еще усугубилась тем, что этот недобраузер постоянно норовит чо-нибудь закешировать! Если бы не эта его странная особенность, я бы давным давно нашел причину. Ведь даже когда я полностью менял скрипт вывода новостей на строчку
<? echo "Новости"; ?>

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


Часовой пояс GMT +3, время: 06:24.