2015-09-04 114 views
1

我已经阅读了其他问题,但是我的问题却有点不同。我从Laravel的一个雄辩的查询中得到了这样一种格式的响应。在jquery Laravel 5.1中解析json响应

[{"id":1,"message":"sdfsdf","message_for":1,"message_by":2},{"id":2,"message":"hello","message_for":4,"message_by":2},{"id":4,"message":"hi how are you?","message_for":1,"message_by":2}] 

没有附连到每个对象像变量在该questiondiv1div2等 这是我的ajax代码

$.ajax({ 
     url: '/chat', 
     type: 'POST', 
     dataType: 'json', 
     data: { id: sessionStorage.getItem('user_id') }, 
     //cache: false, 
     success:function(data){ 
      /*var x; 
      for(x in data){ 
       /!*$("span.messages").fadeIn("slow").append(data[x]); 
       $("span.messages").append("<br>");*!/ 

      }*/ 
     }, 
     error: function(data) { 
      console.log('data is :'+data.id); 
      console.log("error"); 
     } 
    }); 

这是从我在哪里返回响应我的控制器功能。

public function getUserMessages(Request $request){ 

     $id = (int)$request->request->get('id'); 
     $messages = Message::where('message_by' , $id)->get()->toJson(); 

     return $messages; 
    } 

我试过使用data["message"]但它不起作用。使用data[0]将返回[

+0

你需要json_encode:'返回响应:: JSON( $ message);' – Zl3n

+1

实际问题是如何循环> –

+0

请通过编辑您的文章显示返回数据的内容 – Zl3n

回答

1

我用foreach获取数据

$.each(data, function(i, obj) { 
    alert(obj.message); 
}); 
0

使用数据[0]会返回[

这似乎是data是一个字符串,而不是一个对象。

一个解决方案是如此,它告诉它发送JSON的浏览器来修改你的PHP代码:

header('Content-Type: application/json'); 

另一种解决方案是明确解析JSON来获取对象。

var data = JSON.parse(response); 

此外,你有一个数组。迭代数组的常规方法是增加索引。更新的方法是使用内置的.forEach()方法。另外,建议使用jQuery的$.each()作为另一个答案。

success:function(response){ 
     var data = JSON.parse(response); 
     var x; 
     for (i = 0; i < data.length; i += 1) 
      { 
      var record = data[i]; 
      $("span.messages").fadeIn("slow").append(record.message); 
      $("span.messages").append("<br>"); 
     } 
    }, 
0

您正在从控制器获取对象的集合。所以你可以这样做。从你的回报基于

success:function(data){  
     var x; 
     for(x in data){ 
      $("span.messages").fadeIn("slow").append(data[x]['message']); 
      $("span.messages").append("<br>"); 

     } 

    }, 

的x是你的索引..你可以叫

data[x]['id'] 
data[x]['message'] 
data[x]['message_for'] 
data[x]['message_by'] 

取决于你所需要的