2014-12-07 4 views
1

Я пытаюсь вывести некоторые объекты JSON в консоли, но он не работает. Этот JSON происходит из мини-API, который я создал с помощью PHP.Чтение массива JSON с помощью jQuery

Моя JSON выглядит следующим образом:

{ 
    TotalResults: 2, 
    Results: [ 
     { 
      UserName: "Sarah", 
      ModifDate: "2014-12-01T08:03:40.000+00:00", 
      ID: "54321", 
      Title: "Brilliant", 
      RText: "This is a brilliant product" 
     }, 
     { 
      UserName: "Joe", 
      LastModificationTime: "2014-11-01T08:03:40.000+00:00", 
      Id: "12345", 
      Title: "Excellent", 
      RText: "This is a great console," 
     } 
    ] 
} 

Мои Javascript:

$.ajax({ 
    url:'http://myapi.com?api=1&test=test', 
    dataType: 'json', 
    type: 'get', 
    cache: false, 
    success:function(data){ 
     for (var i in data) { 
     var count = data[i].TotalResults; 
     var name = data[i].Results.UserName; 
     var text = data[i].Results.RText; 
     console.log(name); 
     console.log(text); 
     } 
    } 
}); 

Однако ничто не возвращается, и я получаю следующее в журнале консоли:

неперехваченным TypeError: Не удается прочитать свойство «Итоговые результаты» не определено

У вас, ребята, есть n проще читать данные JSON в массиве?

В конечном итоге я хочу выводить эти данные в DOM как HTML.

+2

Выполните консоль.log, которая возвращает 'data' ... иногда это выглядит не так, как мы ожидаем. Это может дать вам информацию для продвижения вперед. – rfornal

+0

put 'console.log (data);' и что такое 'console.log (text);' возвращает? – Riad

ответ

3
$.ajax({ 
    url:'http://myapi.com?api=1&test=test', 
    dataType: 'json', 
    type: 'get', 
    cache: false, 
    success:function(data){ 
     for (var i in data.Results) { 
     var count = data.TotalResults; 
     var name = data.Results[i].UserName; 
     var text = data.Results[i].RText; 
     console.log(name); 
     console.log(text); 
     } 
    } 
}); 

Ваша итерация была немного изворотливой, теперь это должно работать.

Вот JSFiddle, чтобы показать, что это работает: http://jsfiddle.net/n7afxhed/

+0

Это замечательно! Это сработало, спасибо! И извините за ошибку: var count = data [i] .TotalРезультаты должны были быть var count = data.TotalResults – AlexisP

0

, как вы читаете ответ JSON неправильно

Вы должны прочитать data объект как обычный/родной объект Javascript/JSON:

в вашем успехе функции обратного вызова:

function(data) { 
//data.Results is the array , we fetch it using the forEach Javascript function, you can use for also... 
data.Results.forEach(function(result) { 
    console.log(result.UserName) 
    ... 
})} 

Вам даже не нужно отправить TotalResult р потому что вы можете получить длину массива, как собственный массив Javascript: data.Results.length.

Итак, в другом мире, когда вы читаете данные JSON, прочитайте его как простой объект Javascript.

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