2017-06-08 8 views
0

以前はJSONオブジェクトを使用してHTML要素を正常に作成できましたが、JSONオブジェクトをネストされたJSONに変更したため、HTML要素を適切に再現できません。私はかなりプログラミングに新しいので誰も私が間違っている場所を見つけるのを助けることができますか?ネストされたJSONオブジェクトを使用したhtml要素の作成

JSONファイル:

{ 
    "ThreeG": [ 
    { 
     "title":"Testing 1", 
     "filePath":"https://example.com", 
     "imagePath":"images/test.jpg" 
    }, 
    { 
     "title":"Testing 2", 
     "filePath":"https://example.com", 
     "imagePath":"images/test2.jpg" 
    } 
    ] 
} 

スクリプト:

<script> 
    $.ajax({ 
     url : "TestFiles.json", 
     type : "post", 
     contentType:"application/json", 
     success : function(list){   
      var divCol = "<div class='col-md-offset-1 col-sm-5 col-md-5'>"; 
      var divWell = "<div class='well' style='position:relative'>"; 
      var divClose= "</div>"; 

      list.forEach(function(obj, index) { 

      var title  = "<h4>"  + obj.ThreeG.title + "</h4>"; 
      var linkStart = "<a href='" + obj.ThreeG.filePath + "' target='_blank'>" ; 
      var image  = "<img data-toggle='tooltip' data-placement='left' title='Click to open data' src='" + obj.ThreeG.imagePath + "' height='100%' width='100%'/>" 
      var linkEnd = "</a>"; 

      var div = divCol + 
      divWell  + 
      title  + 
      linkStart  + 
      image  + 
      linkEnd + 
      divClose + 
      divClose; 

      console.log(obj); 
      $("#test").append(div); 

      }) 
     } 
    }); 
    </script> 

答えて

0

var obj = { 
 
    "ThreeG": [ 
 
    { 
 
     "title":"Testing 1", 
 
     "filePath":"https://example.com", 
 
     "imagePath":"images/test.jpg" 
 
    }, 
 
    { 
 
     "title":"Testing 2", 
 
     "filePath":"https://example.com", 
 
     "imagePath":"images/test2.jpg" 
 
    } 
 
    ] 
 
}; 
 

 
for(var i=0;i<obj.ThreeG.length;i++) { 
 
var data = obj.ThreeG[i];//Take a reference here 
 
console.log(data.title, data.filePath, data.imagePath); 
 
}

obj.ThreeGarrayあるので、あなたはobj.ThreeG.titleを言うことはできません。 obj.ThreeG[0].titleobj.ThreeG[1].titleなどを使用する必要があります。

上記のようにループを繰り返す必要があります。

+0

私はスクリプトでforループをどこに置くのですか? – nurul98

+0

@ nurul98 'list'も配列であると仮定すると、関数' function(obj、index){'の内部でそれを行うことができます。 –

+0

@ nurul98 'list'とは何ですか? –

1

成功コールバックのパラメータは、プロパティ/キーThreeGを持つオブジェクトです。したがって、list.forEachの代わりにlist.ThreeG.forEachを実行し、forEachコールバックの各objは、HTML要素を作成するために使用できるjsonオブジェクトになります。

list.ThreeG.forEach(function(obj, index) { 
     console.log(obj); // { "title":"Testing 1", "filePath":"https://example.com", "imagePath":"images/test.jpg" } for the first object 
} 
+0

私はそれを試みましたが、それは動作していませんし、コンソールは何も出力しませんでした – nurul98

+0

@ nurul98上記のスクリプトで 'list.forEach'をこれと置き換えてください。 –

+0

何と置き換えますか? – nurul98

関連する問題