laravel句柄json子数组

时间:2015-08-23 11:22:16

标签: php jquery json

对于我的项目,我尝试创建一个ajax调用并处理数据。

我的Ajax电话:

    $.ajax({
        type: 'GET',
        dataType: "json",
        url: ****,
        data: {****},
        success: function(data){
            console.log(data.rooms);
            $('.pagination').html(data.paginate);
        },
        error: function(){
            alert('failure');
        }
    });

在带有laravel的服务器上,我创建了一个响应:

return response()->json(['rooms' => $rooms->toJson() , 'paginate' => $bathrooms->render()]);

在我的ajax中调用json响应looks like(编辑这是原始的json):

  {"rooms": "{\"total\":3,\"per_page\":9,\"current_page\":1,\"last_page\":1,\"next_page_url\":null,\"prev_page_url\":null,\"from\":1,\"to\":3,\"data\":[{\"id\":237,\"name\":\"Modern met allure\",\"description\":\"Badkamer blablabla\",\"collection_id\":187,\"style_id\":7,\"created_at\":\"-0001-11-30 00:00:00\",\"updated_at\":\"-0001-11-30 00:00:00\"},{\"id\":243,\"name\":\"TIjdloze charme\",\"description\":\"Tijdloze charme\",\"collection_id\":187,\"style_id\":2,\"created_at\":\"-0001-11-30 00:00:00\",\"updated_at\":\"-0001-11-30 00:00:00\"},{\"id\":245,\"name\":\"Staande badkraan Bollicine\",\"description\":\"blablabla\n\",\"collection_id\":199,\"style_id\":7,\"created_at\":\"-0001-11-30 00:00:00\",\"updated_at\":\"-0001-11-30 00:00:00\"}]}","paginate": ""}

现在我想循环数据中的所有对象,所以首先我尝试了:

 console.log(data.rooms);

这给了我第一部分我想要的(只有房间不是something_else,接下来我试图只获取数据部分

console.log(data.rooms.data);

但结果是

 undefined

我应该如何访问/循环数据(房间的子部分)。

1 个答案:

答案 0 :(得分:1)

我认为你这里有两个data的问题。一个是变量名,第二个是密钥名。 尝试使用:

console.log(data.rooms["data"]);

或为success参数选择其他名称:

success: function(roomsdata){
    console.log(roomsdata.rooms);
    $('.pagination').html(roomsdata.paginate);
},

更新:了解如何在服务器上生成json:

return response()
    ->json([
        'rooms' => $rooms->toJson() , 
        'paginate' => $bathrooms->render()
    ]);

您正在进行双json编码:首先使用$roomstoJson()编码为json,然后使用json()再次将json-string编码为json。移除toJson()来电,仅保留json()