Symfony JsonResponse:获取symfony控制器返回的多维数组的每个元素

时间:2016-05-09 11:41:59

标签: php jquery arrays json symfony

基本上我要做的是尝试从symfony控制器传递的“数组”数组中获取每个元素,当我尝试获取表的所有行时。我的控制器工作得非常好,给我输出:

  

[{“id”:1,“name”:“johnsonn's baby shampoo”,“dsc”:“shampoo”,“pic”:“572f8a02d59b3.jpg”,“company”:4,“type”:“婴儿用品“,”价格“:150,”已售出“:null,”stock“:200},{”id“:2,”name“:”johnson's soap“,”dsc“:”baby soap“,”pic “:”57303fc35f72c.jpg“,”公司“:4,”类型“:”婴儿用品“,”价格“:52,”已售出“:null,”库存“:1000}]

我的用于获取此输出的javascript如下:

<script>
    function fetchprod() {
        $.ajax({
            url: "/show/prod",
            dataType: "json"
        }).success(function(data){
            $('#container').html(JSON.stringify(data));
        });
    }
    fetchprod();
    setInterval(function () {fetchprod()}, 3000);
</script>

我想要做的是分别获取每个数组的每个元素,以便我可以创建一个div,以便它们可以正确排列在网格中。

该数组也由symfony控制器获取(如果您需要额外的信息):

public function showAction($slug){
    $em = $this->getDoctrine()->getManager();
    if($slug == 'prod'){
        $repo = $em->getRepository('SystemBundle:Products');
        $q = $repo->createQueryBuilder('u')
            ->getQuery()
            ->getArrayResult();
        return new JsonResponse($q);
    }

}

1 个答案:

答案 0 :(得分:0)

由于你正在使用jQuery,也许你可以使用each方法:

// ajax call
.success( function (data) {
    $.each(data, function(key, value) {
        var div = '<div>' + JSON.stringify(value) + '</div>';
        $('#container').append(div);
    });
});
// close function

通过这种方式,您遍历数组中的每个对象,将其放在div中,然后将其附加到#container

应该创建类似的东西:

<div id="container">
    <div>{"id":1,"name":"johnsonn's baby shampoo","dsc":"shampoo","pic":"572f8a02d59b3.jpg","company":4,"type":"baby products","price":150,"sold":null,"stock":200}</div>
    <div>{"id":2,"name":"johnson's soap","dsc":"baby soap","pic":"57303fc35f72c.jpg","company":4,"type":"baby products","price":52,"sold":null,"stock":1000}</div>
</div>