2017-01-11 28 views
1

在StackOverflow上有這樣的問題,我知道。如何檢索json數據到laravel控制器

相信我,我試過所有的解決方案無濟於事。

我一直在試圖從angularjs這個JSON數據發佈到laravel控制器的方法:

[ 
    { 
    "id": 2, 
    "name": "add-user", 
    "display_name": "Add new user", 
    "description": "Create a new worker", 
    }, 
    { 
    "id": 4, 
    "name": "add-role", 
    "display_name": "Add role", 
    "description": "Add user role", 
    } 
] 

這是代碼,這JSON數據會發布到laravel控制器:

$http({ 
    method: 'POST', 
    url: '/api/roles/assignPermissions/' + name, 
    headers: { 'Content-Type' : 'application/json' }, 
    data: $.param(role_perms) 
}).success(function(data){ 
    console.log(data); 
}); 

現在在這個控制器方法中,我只想檢索這個json數據,並將其返回並顯示在控制檯中,以確保我在控制器中接收到它。

下面是控制器和我所做的所有嘗試獲取此json數據並將其返回。

控制器:

public function massAssignPerms(Request $request, $roleName) 
{ 
    $role = Role::where('name', $roleName)->first(); 


    // this returned nothing 
    return json_decode(file_get_contents('php://input'),true); 

    // this returned: add-user=&add-role= 
    return file_get_contents('php://input'); 

    // returned nothing 
    return json_decode($request->getContent(), true); 

    // returned empty array [] 
    return $request->json()->all(); 
} 

我無法找到有什麼錯我的代碼。或者它可能是我做錯了?

任何幫助將不勝感激。

+0

你用什麼版本的laravel? – jackel414

+0

請顯示'dd($ request)'的結果;' –

+0

@ jackel414我正在使用laravel 5.3 –

回答

1

你需要確保你的回答是你的變量。要從Laravel控制器功能返回JSON,這是因爲在the docs奠定了正確的語法:

return response()->json([ 
    'name' => 'Abigail', 
    'state' => 'CA' 
]); 

假設你想返回你的角色查詢的結果,你可以做到以下幾點。如果您願意,您也可以指定一個狀態碼。

return response()->json(['role' => $role], 200); 

編輯:如果你想簡單地從原始請求返回的數據,可以作出這樣的JSON響應,而不是內容:

return response()->json($request->all(), 200); 
+0

感謝您的回答。但是你寫的會返回來自控制器中已有的json的響應。我想要返回的是傳遞給控制器​​的$ request中的json。 –

+0

如果您執行'dd($ request-> all());'在您的控制器方法的頂部,結果是什麼? – jackel414

0

如果顯示的數據是真的什麼發送(我猜你正在測試硬編碼值),那麼它是不正確的JSON(每個對象的最後一個鍵之後的額外逗號)。
試一下:

[ 
    { 
    "id": 2, 
    "name": "add-user", 
    "display_name": "Add new user", 
    "description": "Create a new worker" 
    }, 
    { 
    "id": 4, 
    "name": "add-role", 
    "display_name": "Add role", 
    "description": "Add user role" 
    } 
]