2015-09-04 99 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'] 

取決於你所需要的