jQuery « Jquery ajax + php +ie8

Добрый день!
Есть аякс-запрос - обновление корзины при добавлении товара. Всё работает супер в ФФ, Опера, Хром, но в ие8 - запрос отрабатывается, товар в корзину попадает, но при этом новый пришедший html-код от сервера не хочет отображаться никак. С бубном перетанцевал и перегуглил 4 часа - ничего не помогает.
Но выяснил, что причина, скорее всего, на стороне пхп, так как если в файлике, куда аякс кидает запрос, просто написать "тест" - надпись отображается. Если запихнуть php-код обратно - не отображается. Анализировал заголовки: если работать без пхп, то при этом Content-encoding пуст. А версия с пхп отдает Content-encoding; gzip. Это единственное отличие и зацепка, которую я нашел на данный момент. При этом на другом сайте с похожим запросом и аналогичными заголовками ие8 работает нормально... Куда копать дальше?
Сам запрос простой:

$.ajax({
  url: '/tools/ajax/basket.php',
data:{id:element},
timeout:'10000',
error: function(){
alert("Произошла ошибка. Пожалуйста, обратитесь к администрации за помощью.");
},
  success: function(data) {
$('.head-basket').html(data);
},
})
 

1 ответов


А почему вы не пользуетесь http://api.jquery.com/load/ для этих целей? Я думаю проблем никаких не будет.

P.S. вспомнив что уже сталкивался с подобной проблемой и погуглив, нашёл кучу проблем с ajax + ie + charset, можете выложить кодировку из заголовков запроса сюда?


Попробуйте использовать тип данных json. К вашему запросу добавьте dataType: "json"


$.ajax({
     url: '/tools/ajax/basket.php',
     data:{id:element},
     timeout:'10000',
     error: function(){
     alert("Произошла ошибка. Пожалуйста, обратитесь к администрации за помощью.");
     },
          success: function(data) {
          $('.head-basket').html(data);
     },
     dataType: "json"
})
 
ответ в PHP формируйте так: echo json_encode($val); или, если нужно, возвращайте массив echo json_encode(array($val-1,$val-2,$val-n));
P.S. Использую очень часто, обязательно проверяю в огромном кол-ве браузеров (восьмой осёл так же) и ни разу не возникало сложностей

Всем спасибо, проблема решена!
IE очень принципиально, чтобы получаемый код был валидным. В противном случае он его игнорирует. В моём случае закрывающий тег дива оказался в основном документе, а не в получаемом. Все браузеры это устроило, только не ИЕ :).
Еще раз спасибо и извините за долгий ответ.