получить цикл данных JSON - PullRequest
       1

получить цикл данных JSON

0 голосов
/ 02 сентября 2011

Здравствуйте, у меня возникла проблема: у меня есть некоторые данные, поступающие из файла JSON, и мне нужно записать их более эффективно.В принципе, он работает нормально, но я хотел бы поместить изображения как вложенный массив или что-то в этом роде.

Так что мне просто нужно сделать только один вызов тега изображения, но тег изображения принесет набор изИзображений.Я не хочу определять теги image1-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>

Ответы [ 3 ]

0 голосов
/ 02 сентября 2011

Используйте вложенный каждый цикл (при условии, что структура остается в соответствии с тем, что вы показываете:

$.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 голосов
/ 02 сентября 2011

Вы можете создать что-то вроде этого, но при этом все images и pagename внутри mygallery объекта.

{   
   "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 голосов
/ 02 сентября 2011

Возможно, я неправильно понял вопрос, но вы можете определить массив в JSON в квадратных скобках, например:

{
"myArray":["foo","bar","baz"]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...