2017-01-24 5 views
0

в следующем коде, я пытался извлечь данные из json, и было несколько ошибок, которые я не понимаю. В моем предыдущем посте кто-то сказал, что это связано с проблемами закрытия. Может кто-нибудь объяснить, почему эти проблемы все еще происходят, хотя я уже меняю «var» на «let» в обоих циклах?Не удалось получить данные из вложенных данных Json

Я хотел бы попробовать решение bind, но, я не понимаю шаги. это потому, что я обращаюсь к массиву loop в json-файле.

function displayData(data) { 
var json = JSON.parse(data); 

alert (json.projects[0].task_data[1].taskName); //working 

for (let i = 0; i < json.projects.length; i++) { 

    $.ajax({ url: epridlist, method: 'GET' }).then(function (datas) { 
      alert (json.projects[i].projName); //success load the value 
    }); 

    for (let j = 0; j < json.projects[i].task_data.length; j++) { 
     $.ajax({url: tasklist,method: 'GET'}).then(function (data) 
     {alert (json.projects[i].task_data[j].taskName);});//success only on first row, next row value is undefined 
     alert (json.projects[0].task_data[1].taskName); //undefined   
    } 
} 
} 

это данные JSON

{"projects":[{"projName":"1","task_data":[{"taskName":"1","task_detail_data":[{"h_sun":"0.00","h_mon":"0.00","h_tue":"0.00","h_wed":"0.00","h_thu":"0.00","h_fri":"0.00","h_sat":"0.00"}]},[{"taskName":"2","task_detail_data":[{"h_sun":"0.00","h_mon":"0.00","h_tue":"0.00","h_wed":"0.00","h_thu":"0.00","h_fri":"0.00","h_sat":"0.00"}]}]]},{"projName":"2","task_data":[{"taskName":"3","task_detail_data":[{"h_sun":"0.00","h_mon":"0.00","h_tue":"0.00","h_wed":"0.00","h_thu":"0.00","h_fri":"0.00","h_sat":"0.00"}]}]}]} 

Благодарности

+0

Спасибо, Майкл, ваш ответ заставляет меня понять, что мой json-файл неверен, что приводит ко всем этим проблемам. – silentHijab

+0

Посмотрите решение, которое я предлагаю. –

ответ

2

Эта проблема возникает здесь: json.projects[0].task_data[1].taskName Вы пытаетесь присоединиться к объекту, как не существует. массив task_data во второй позиции - это массив, а не объект. Сосредоточением на вашу проблему является использование json.projects[i].task_data[0].taskName, присоединяющегося к объекту вместо массива.

+0

Вы правы. прошу прощения за ошибки – silentHijab

+0

Я помогу отметить ответ как правильный. –

2

Кажется, что ваши данные в формате JSON имеет inconsitant структуру.

При просмотре JSON в Json Viewer программе первого элемента task_data является объект, а второй массив (см рисунок ниже):

enter image description here

Ниже строки в коде вызовет вопрос:

json.projects[0].task_data[1].taskName 
+0

Да, я просто понимаю это сейчас. Спасибо за ваш взгляд – silentHijab

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