使用Ajax动态插入猫头鹰轮播的图像

时间:2018-04-16 10:19:26

标签: jquery json ajax owl-carousel

我正在尝试使用Ajax从json文件插入图像。这些图像将由owl轮播使用,但是目前它只显示json文件中的最后一个图像。

这是我的代码:

HTML

     <div class="content newFilms">
        <h2 class="welcomeText">New Releases</h2>
        <div class="owl-carousel owl-theme"></div>
    </div>

JS

$(document).ready(function() {

    $.getJSON("data/owl.json",function(img){
       $.each(img, function(index,img){
            var $newImg = $(img.item);

        $(".owl-carousel").append($newImg);

       });
  $(".owl-carousel").owlCarousel({
      dots:true
  });

});
});

JSON

[
{
    "item":"<img src='images/slide1.jpg'/>",
    "item":"<img src='images/slide2.jpg'/>",
    "item":"<img src='images/slide3.jpg'/>"
}
]

1 个答案:

答案 0 :(得分:1)

在同一个对象中不能有多个相同的键。

我建议使用不同的数据结构。具有images属性的顶级对象,该属性是一个对象数组,每个对象都包含有关单个图像的信息。

{
    "images": [
        {"url": "images/slide1.jpg"},
        {"url": "images/slide2.jpg"},
        {"url": "images/slide3.jpg"}
    ]
}

然后代码自然地遵循:

$(document).ready(function() {
    $.getJSON("data/owl.json").done(function (data) {
        $.each(data.images, function(index, img) {
            $('<img>', { src: img.url }).appendTo(".owl-carousel");
        });

        $(".owl-carousel").owlCarousel({
            dots:true
        });
    });
});

请注意,将完成的HTML放在JSON中并不是一个好主意,因为这限制了您在客户端使用它可以做什么,并导致JSON数据中无用的重复。

jQuery使得从数据构建HTML元素变得非常容易,利用该功能并且只在JSON中包含实际的数据。客户端代码可以处理如何呈现它的细节。