2011-09-02 208 views
-1

你好我有一些问题: 我有一些数据来自JSON文件,我需要以更有效的方式编写它。基本上它的工作正常,但我想将图像像嵌套数组或其他东西。获取json数据循环

所以我只需要做一个图像标签调用,但图像标签将引入一组图像。我不想定义图像1-image1000的img标签,

我应该能够只是把在相似图片:

“image”: { image1.jpg, image2.jpg, image3.jpg, image4.jpg} 

,并用这样的

一个图像标签叫它那可能?一些指导将会有所帮助。感谢

JSON DATA 

{ "mygallery": [ 
      {"image1": " image1.jpg", 
      "image2": " image2.jpg", 
      "image3": " image 3.jpg", 
      "image4": " image 4.jpg", 
      “pagename”: “MyGallery”, 
    } 




JAVASCRIPT CALL 

<script type="text/javascript"> 
$.getJSON('js/gallery.js, function(data){ 
     $("#main").html(''); 
     $(data.mygallery).each(function(index, mygallery){ 
      $("#main").append('<li class="thecontent"><img src="/_img/' + mygallery.image1 + '" /><img src="/_img/' + mygallery.image2 + '" /><img src="/_img/' + mygallery.image3 + '" /><img src="/_img/' + mygallery.image4 + '" /><span>' + mygallery.pagename + '</span></li>'); 
     }); 
    }); 



</script> 



HTML DIV 
<div id=”main”> 




</div> 

回答

0

您可以创建这样的事情仍然让所有的imagespagenamemygallery目的。

{ 
    "mygallery": { images: [ 
         "image1.jpg", 
         "image2.jpg", 
         "image3.jpg", 
         "image4.jpg", 
        ], 
        pagename: “MyGallery” 
       } 
} 

这是你将如何使用它

$.getJSON('js/gallery.js', function(data){ 
     $("#main").html('<li class="thecontent">'); 
     var images = data.images; 
     for(var i =0;i<images.length;i++){ 
     $("#main").append('<img src="/_img/' + images[i] + '" />'); 
     } 
     //$.each(images function(index, image){ 
     // $("#main").append('<img src="/_img/' + image + '" />'); 
     //}); 

     $("#main").append('<span>' + data.pagename + ' </span></li> '); 
    }); 
+0

I'm getting it to spit it out like this:

+0

@john - 看看我编辑的答案添加了所需的代码来循环显示图像并追加标记。 – ShankarSangoli

+0

@john - 我编辑过的答案对你有帮助吗? – ShankarSangoli

0

我可以误解的问题,但可以在JSON用方括号限定的阵列,因此,例如:

{ 
"myArray":["foo","bar","baz"] 
} 
+0

此外,这些信息是完全在json.org – JSager

+0

解释所以,如果我有一个阵列已经定义是这样的: { \t "mygallery": [ \t \t \t {"image1": " image1.jpg", \t \t \t "image2": " image2.jpg", \t \t \t "image3": " image 3.jpg", \t \t \t "image4": " image 4.jpg", \t \t \t “pagename”: “MyGallery”, \t } 如何我会编写它以便图像部分位于仍然对应于mygallery数组名称的数组中? –

+0

约翰,你在那里提供的代码实际上是无效的JSON。开放的方括号永远不会关闭,开放的大括号永远不会关闭,并且在JSON对象的末尾会有一个额外的逗号。此外,严肃地说,低调试图帮助你的人是保证没有其他人会尽力帮助你的好方法。 – JSager

0

使用嵌套每个循环(假设结构保持一致你正在展示:

$.each(data.mygallery,function(index,mygallery){ 
    var $li = $('<li />'{ class: 'thecontent' }).appendTo('#main'); 
    $.each(mygallery,function(name,image){ 
    $('<img />',{ src: '/_img/'+image }).appendTo($li); 
    }); 
}); 

否则,你可能会更好过使图像的数组,而不是一个对象,而不是这样的:

"images": { "imgae1" : "image1.jpg", "image2": "image2.jpg" } 

它看起来像:

"images": ["image1.jpg", "image2.jpg", "image3.jpg"]; 

(除非该键值的原因)

+0

所以......谁经历,做了大规模反对票和为什么没有给任何人一个理由? –

+0

我同意,这是一个恼人的downvote恐怖分子松散。 – JSager