将php数组编码为keyed JSON数组以便在javascript中使用?

时间:2015-06-26 13:26:26

标签: javascript php jquery json jquery-data

我需要创建一个带键的JSON数组,将一组通过PHP查询的图像传递给vegas background slideshow,它希望图像在这样的数组中:

$("#example, body").vegas({
    slides: [
        { src: "/img/slide1.jpg" },
        { src: "/img/slide2.jpg" },
        { src: "/img/slide3.jpg" },
        { src: "/img/slide4.jpg" }
    ]
});

我已尝试在PHP中手动将其构建为字符串,将其设置为DOM对象上的数据属性并将其设置为:

<div id="example" data-slides="[{ src: "1.jpg" }, {src: "2.jpg" }]"></div>

然后:

slides: $('#example').data('slides');

哪个不起作用,因为我想它接收的是字符串,而不是数组。

我尝试在json_encode等阵列上使用[src=>"1.jpg", src=>2.jpg"],但无法获得正确的格式,例如:{ src: "img.jpg" }。我一直在数组中获取整个字符串:

["src=>\"1.jpg\"]

2 个答案:

答案 0 :(得分:3)

你应该用PHP构建你的数组:

$slides = array(
    array("src" => "/img/slide1.jpg"),
    array("src" => "/img/slide2.jpg"),
    array("src" => "/img/slide3.jpg"),
    array("src" => "/img/slide4.jpg")
);

echo json_encode($slides);

将输出:

  

[{&#34; SRC&#34;:&#34; /img/slide1.jpg"},{&#34; SRC&#34;:&#34; /img/slide2.jpg&# 34;},{&#34; SRC&#34;:&#34; /img/slide3.jpg"},{&#34; SRC&#34;:&#34; /img/slide4.jpg&# 34;}]

您确实可以将图像JSON字符串设置为数据(不要忘记对其进行HTML编码):

<div id="example" data-slides="<?php
    echo htmlspecialchars(json_encode($slides));
?>"></div>

如果你$('#example').data('slides');它会给你一个对象数组,因为jQuery已经将它识别为JSON并将解析它。

答案 1 :(得分:0)

不确定问题是什么......

$images = array("slides" => array()); // { slides: [] }
array_push($images["slides"], array("src" => "/img/slide1.jpg")); // { slides: [ { "src": "/img/slide1.jpg" } ] }
array_push($images["slides"], array("src" => "/img/slide2.jpg"));
array_push($images["slides"], array("src" => "/img/slide3.jpg"));
array_push($images["slides"], array("src" => "/img/slide4.jpg"));
echo json_encode($images);