2015-01-02 2 views
0

Я использую метод getJSON JQuery для retrive и разобрать простой файл в формате JSON, но, когда я выходные значения на моей странице он показывает, как undefinedИспользуем все функции в getJSON возвращает неопределенное значение

$.getJSON('js/example.json', function (data) { 

    var output = ''; 

    $.each(data.exercises, function (index, exercise) { 
     output += '<li>' + exercise.work.weight + ' x ' + exercise.work.reps + '</li>'; 
    }); 

    $('#example').html(output); 

}); 

example.json

{ 

    "exercises" : [ 

     { 
      "name" : "Squats", 
      "work" : [ 
       { 
        "weight" : 135, 
        "reps" : 5 
       }, 
       { 
        "weight" : 225, 
        "reps" : 5 
       }, 
       { 
        "weight" : 315, 
        "reps" : 5 
       } 
      ] 

     }, 
     { 
      "name" : "Bench", 
      "work" : [ 
       { 
        "weight" : 135, 
        "reps" : 5 
       }, 
       { 
        "weight" : 225, 
        "reps" : 5 
       }, 
       { 
        "weight" : 315, 
        "reps" : 5 
       } 
      ] 

     }, 
     { 
      "name" : "Rows", 
      "work" : [ 
       { 
        "weight" : 135, 
        "reps" : 5 
       }, 
       { 
        "weight" : 225, 
        "reps" : 5 
       }, 
       { 
        "weight" : 315, 
        "reps" : 5 
       } 
      ] 

     } 

    ] 


} 

Я думаю, что ошибка может заключаться в моей каждой функции, но я еще не смог ее идентифицировать. Есть идеи?

+0

Если вы console.log выход в пределах вашего каждого оператора, не предоставляет результата вы» вы ищете? –

+0

'exercise.work' - массив. Вам нужно будет перебрать его или нацелить на отдельный элемент. –

+0

Учитывая, что каждое упражнение имеет несколько значений 'work.weight', которое вы ожидали получить? –

ответ

2

Ваше упражнение работа представляет собой массив, нужен другой цикл

$.each(data.exercises, function (index, exercise) { 
    $.each(exercise.work, function (index, work) { 
     console.log(work); 
    }); 
}); 
+0

Спасибо, это работает, но зацикленные данные повторяются 3 раза. – Rich

+0

ну, у вас есть 3 предмета в каждом упражнении. Если вы хотите только первый смену цикла для упражнений. [0] – Amundio

+0

Простите, повторений нет. Просто ошибка на моей стороне. – Rich

1

Это:

output += '<li>' + exercise.work.weight + ' x ' + exercise.work.reps + '</li>'; 

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

"exercises" : [ 
    { 
    "name" : "Squats", 
    "work" : 
     { 
     "weight" : 135, 
     "reps" : 5 
     } 
    }, 

Когда на самом деле work является массивом в каждом конкретном случае.

Вы хотите что-то вроде:

$.each(data.exercises, function (index, exercise) { 

    $.each(exercise.work, function(index, workout) { 
     output += '<li>' + workout.weight + ' x ' + workout.reps + '</li>'; 
    }); 

}); 
Смежные вопросы