2016-08-16 2 views
0

Я хотел использовать jQuery's $.each(), и он работает, но не в IE6. Введите json2. Таким образом, я получаю данные и привязки его к вар с помощьюJSON строит вызов в ajax, который совместим с ie 6

var theData = JSON.stringify(data); 

Тогда вызывающему через массив

var i; 
    for(i=0; i<theData.Event.Football.length; i++) 
    { 
     alert(theData.Event.Football[i].time); 
    } 

Хотя это просто говорит «Не удается прочитать свойство„Футбол“неопределенных»

Вот JSON, после 6 часов пробных вариантов я использую im, просто недопонимая что-то простое.

{ 
"Event":{ 
    "Football":[ 
     { 
      "title": "Some Event", 
      "time": "6:00" , 
      "competitors": { 
      "competitors1": "Boaty Mc Boat", 
      "competitors2": "Disco Dave" 
      }, 
      "win": { 
      "win1": 1.3, 
      "win2": 1.89, 
      "win3": 1.79 
      } 
     }, { 
      "title": "Some Event", 
      "time": "7:00" , 
      "competitors": { 
      "competitors1": "Flesh Wound", 
      "competitors2": "None Shall Pass" 
      }, 
      "win": { 
      "win1": 2.03, 
      "win2": 1.79, 
      "win3": 1.79 
     } 
    ] 
    } 
} 

Final Fix, была проблема с синтаксисом AJAX, вот рабочая версия, которая позволяет выше код работать

$.ajax({ 
    type: 'GET', 
    url: "football1.json", 
    dataType: "json", 
    processData: true, 
    contentType: "text/json; charset=utf-8", 
    data: {}, 
    success: function(data){ 
     alert('working'); 
     // do stuff 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     console.debug(textStatus, errorThrown); 
    } 
}); 
+3

* «Я хотел использовать Jquery's $ .each(), и он работает, но не в i.e 6. Итак, введите json2." * Ум ... они не имеют никакого отношения друг к другу. –

ответ

4

Эта линия:

var theData = JSON.stringify(data); 

занимает структуры данных и превращает его в строку (JSON).

Если data is уже не строка, просто используйте ее напрямую.

Если data является строка и вы хотите идти в другую сторону, вы хотите

var theData = JSON.parse(data); 

... где, опять же, data представляет собой строку, содержащую JSON.

В этот момент, либо $.each или ваш for цикл (или ваш various other options, по модулю IE6 (!) Поддержка) будет цикл через theData.Event.Football.

+0

Эй, T.J Спасибо, что расчистили его. Он работает, называя его напрямую, я должен был упомянуть, что данные JSON вызываются через запрос AJAX, и цикл вызывается в .success(), однако это не работает в IE 6,7, необходимо развернуть другую виртуальную машину для тестирования 8, но я угадываю ту же историю. – Paddy

+0

Короче говоря, я искал несколько старых запросов AJAX, получается, что синтаксис не работал. Спасибо, что указали мне в правильном направлении: D – Paddy

1

Если вы строчите данные, это будет строка. Вы не можете получить доступ к свойствам объекта в строчном представлении объекта JSON.

Ваша петля for выглядит нормально и должна работать с IE6, но она должна быть выполнена на data, а не theData.

Или data также строка? Вы имели в виду использовать theData = JSON.parse(data)?

Смежные вопросы