在JQuery中将Json响应转换为Obj(Symfony2)

时间:2015-03-29 14:12:48

标签: jquery ajax json symfony

我刚刚开始使用AJAX和Json 我在完成加载时在我的页面上创建了一个评论主题的调用 我的控制器以Json格式返回一个对象数组 '[{ “USR”: “吉吉”, “usrpic”: “4993”,...},{OBJ1},{OBJ2}]'

我的Controller.php:

    //.. controller code (preparing results into $results an array of obj)
    $json = json_encode($results);
    /*var_dump($json);
    die();*/ // Problem 1
    $response = new \Symfony\Component\HttpFoundation\JsonResponse();
    return $response->setData(['comments'=> $json ]);

我的JS:

$("document").ready(function(){ 
$.ajax({
        type:'GET',
        url:Routing.generate('get_comments',{id:$id} ),

        beforesend: function(){

        },
        success: function(data){
        console.log(data);
        $("#comid_1").before(data);
        /*var newList = JSON.parse(data);
          console.log(newList);
          $("#comid_1").before(newList);*/ // this gives me Uncaught SyntaxError: Unexpected token < (in console)


        }
    });

这是jquery控制台http://i.stack.imgur.com/X9rHr.jpg的屏幕截图 首先,Json有长度限制吗?!!
我怎样才能在Jquery中开始循环我的Json响应?

1 个答案:

答案 0 :(得分:0)

JsonResponse正在为你做json序列化,所以你应该传递数组,而不是json(这是一个字符串):

return new \Symfony\Component\HttpFoundation\JsonResponse(['comments' => $results]);

所以基本上跳过json_encode它应该可行 - 现在你的服务器的响应是一个字符串,而不是一个json。 没有json长度的限制,这只是你的firebug(或你正在使用的其他工具)制作字符串(因为现在你得到string而不是json)显示更短