Laravel 接收数组作为请求
Posted
技术标签:
【中文标题】Laravel 接收数组作为请求【英文标题】:Laravel receive array as request 【发布时间】:2019-02-13 22:40:39 【问题描述】:在 javascript 中,我会这样做:
axios.post('/api/categories',
topCategories: JSON.stringify( data: ['a', 'b', 'c', 'd', 'e'] )
)
然后,在 Laravel 中,我收到了它:
protected function getCategories(Request $request)
$topCategories = $request->topCategories;
var_dump(json_decode($topCategories));
但是,我总是在var_dump
中收到 null!为什么会这样?
【问题讨论】:
使用 dd(json_decode($topCategories)) 代替并检查结果。 那是null
!是否有另一种方式在 POST 请求中接收数组?
var_dump($request->topCategories['data']);
【参考方案1】:
您不需要使用 JSON.stringify。 Axios 自己做。
axios.post('/api/categories',
topCategories: ['a', 'b', 'c', 'd', 'e']
)
为了处理 POST 有效负载,请在 Laravel 中使用 $request->input()
。
protected function getCategories(Request $request)
$topCategories = $request->input('topCategories');
dd($topCategories);
为了清楚起见:问题不在服务器端。您在那里正确地做所有事情,您可以使用$request->topCategories
从 POST 有效负载中检索数据。但是 ajax 有效载荷构建不正确。
【讨论】:
如何将其转换为数组? 你说“这个”是什么意思? Axios 会将您的有效负载对象转换为 JSON 并将其发送到您的服务器。 Laravel 将解析 JSON,其字段将通过$request->input(<fieldName>)
提供。因此在执行$topCategories = $request->input('topCategories');
之后,您将在$topCategories
变量中拥有一个正确的php 数组。【参考方案2】:
看看这个。希望这对您有所帮助。
https://github.com/axios/axios/issues/1440#issuecomment-379355382
【讨论】:
以上是关于Laravel 接收数组作为请求的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 接收非简单请求出现的 OPTIONS 请求问题
通过 Ajax 传递对象数组并在控制器(Laravel)中作为输入
接收简单 JSON 请求时 RequestException.php 中的 Laravel ServerException