我正在尝试使用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'/>"
}
]
答案 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中包含实际的数据。客户端代码可以处理如何呈现它的细节。