【问题标题】:Laravel receive array as requestLaravel 接收数组作为请求
【发布时间】: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']);

标签: javascript php arrays ajax laravel


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多