【问题标题】:Using Ajax to dynamically insert images for the owl carousel使用 Ajax 为 owl carousel 动态插入图像
【发布时间】:2018-04-16 10:19:25
【问题描述】:

我正在尝试使用 Ajax 从 json 文件中插入图像。这些图像将被 owl carousel 使用,但目前它只显示 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'/>"
}
]

【问题讨论】:

    标签: jquery json ajax owl-carousel


    【解决方案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 中包含实际的 data。客户端代码可以处理如何呈现它的细节。

    【讨论】:

    • 谢谢,虽然这对我不起作用。它没有加载任何图像。
    • 您是否更改了 JSON 文件?
    • 我有,我只是注意到最后一个项目的末尾有一个逗号,我的错。感谢您的帮助。
    • 哦,是的,我在回答中也看到了为时已晚。经常检查浏览器控制台是否有错误,这些东西通常会显示在那里。
    猜你喜欢
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多