2017-01-24 21 views
0

次のコードでは、jsonからデータを抽出しようとしましたが、エラーはほとんど発生しませんでした。以前の投稿では、誰かが閉鎖問題に関連していると言いました。誰も、なぜこの問題がまだ起こっているのか説明してもらえますか?私はすでに "var"を両方のループで "let"に変更していますか?ネストされたJsonデータからデータを取得できません

私はバインドソリューションを試してみたいと思いますが、私はそのステップを理解していません。これは、jsonファイルのforループ配列を参照しているためです。

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データがinconsitant構造を持っているようだ

{"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オブジェクトが存在しないためにトリエイしています。 2番目の位置のtask_data配列は配列であり、オブジェクトではありません。あなたの問題への解決は、配列の代わりにオブジェクトへのアクセスを使用してjson.projects[i].task_data[0].taskNameです。

+0

あなたは正しいです。私の過ちを赦してください – silentHijab

+0

私はそれが正しいと答えるのに役立ちます。 –

2

JSONデータです。第二の配列である一方、task_dataJson Viewerプログラム最初の要素にJSONを閲覧する(写真の下を参照)オブジェクトである

:行の下

enter image description here

あなたのコードでは、問題が発生します。

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

はい、私は今それを実現しています。あなたの意見をお寄せいただきありがとうございます – silentHijab

関連する問題