对于我的项目,我尝试创建一个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
我应该如何访问/循环数据(房间的子部分)。
答案 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编码:首先使用$rooms
将toJson()
编码为json,然后使用json()
再次将json-string编码为json。移除toJson()
来电,仅保留json()
。