JQuery AJAX JSON данные не обрабатываются правильно IE (6 ~ 9) :( - PullRequest
0 голосов
/ 30 июня 2011

Буду благодарен за любую помощь!

Я использую следующий код для создания областей со "случайными" продуктами. Данные JSON, полученные из php-скрипта, выглядят так:

{"New":[{"product_id":"50",...},...],
"Best":[{"product_id":"26",...},...],
...}

«Новые» товары должны перейти на <div id="New"> и т. Д.

Проблема 1: Хотя она отлично работает во всех браузерах, IE (6 ~ 9) оставляет все div пустыми.

Проблема 2: Я хотел бы, чтобы эти данные ajax-JSON кэшировались клиентом. Как видно из FireBug, эти запросы не кэшируются. Нужно ли прибегать к плагинам?

 $.ajax({
    url: "/index.php?AjaxRequest&action=5",
    dataType: "json",
    success: function(data){
    $.each(data, function(key, value) { 
    var new_str ='<ul>';
    $(value.sort(function() {return 0.5 - Math.random()}).slice(0,3)).each(function(){
    new_str+='<li><a href="#" class="right_sidebar" onclick="location.href=\''+this.link+'\'">';
    new_str+= '<img class="right_sidebar_thumb" src="'+this.image+'" alt="'+this.name+'"/></a></li>';
    });
    new_str+='</ul>';
        $('#'+key).append(new_str);
    });
    }});

Ответы [ 4 ]

1 голос
/ 30 июня 2011

Убедитесь, что последний элемент в объекте JSON не имеет запятой после него. Я знаю, что это может сломать IE, поскольку он не может справиться с наличием пустого элемента

0 голосов
/ 01 июля 2011

Наконец-то нашли решение!Оказывается, IE кеширует запросы jquery.Добавление cache: false решило проблему.Долой IE!

0 голосов
/ 30 июня 2011

Я не знаю, является ли это вашей проблемой, но когда я работаю с JSON, у меня очень часто возникают проблемы со структурой моего JSON.Чтобы помочь найти проблему, я использую онлайн-валидатор JSON, который я считаю очень хорошим: http://jsonlint.com/

0 голосов
/ 30 июня 2011

Jquery ожидает, что будет только один элемент с заданным идентификатором.Попробуйте переключиться на

<div class=’new-product’/>

и сопоставить с

$('.new-product')

, как для отлова, попробуйте использовать метод ошибки

$.ajax({
  error: function(){
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...