2015-08-23 42 views
1

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

我的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

'console.log(data.rooms)'工作吗? – RRK

+0

@RejithRKrishnan是的,这给了我想要的第一部分(只有房间) –

+0

真正的ajax响应是什么?因为在json中不能有''',只有'''你在服务器上用什么编码数据? –

回答

1

我觉得这里有两个data这个问题。一个是变量名称,另一个是关键名称。 尝试使用两种:

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

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

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

UPDATE:上看到你如何在服务器上生成JSON:

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

你”重做双JSON编码:首先编码$rooms到json与toJson()和th en编码json-string到json再次与json()。删除toJson()电话,只留下json()

+0

u_mulder两次都试过,如果我使用chrome复制了对象,并且出于某种原因,它有很多反斜杠(请参阅编辑的问题)。这可能是一个问题吗? –

+0

也许它会把'toJson'从'$ rooms-> toJson()'移除。 –

+0

尝试它现在我得到的浴室作为对象,但我不能打开或查看它看起来像的对象:房间:对象 __proto__:对象 –