首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Axios正在post请求中发送数组而不是json对象

问Axios正在post请求中发送数组而不是json对象
EN

Stack Overflow用户
提问于 2020-12-04 15:53:12
回答 3查看 389关注 0票数 0

我正在尝试使用axios从Vuejs前端向后端的Laravel发送post请求。

代码语言:javascript
复制
const data = {
            file: {id}
        }

        axios.post('api/documents/remove', data).then((response) => {
                console.log(response.data);
            }
        }).catch(err => { console.log(err.response.data); })

在laravel中,我像这样打印请求,

代码语言:javascript
复制
 public function removeFile(Request $request)
 { 
    dd($request);
 }

这是我的输出。

代码语言:javascript
复制
Illuminate\Http\Request {#51
  #json: Symfony\Component\HttpFoundation\ParameterBag {#43
  #parameters: array:8 [
  "file" => array:1 [
    "id" => 61
  ]
}
EN

回答 3

Stack Overflow用户

发布于 2020-12-04 15:59:40

PHP的"arrays“不是真正的数组,它们是有序的映射。这就是您的输出所显示的,请求包含参数,这是一个有序映射,而file参数是一个带有id => 61的有序映射。在JavaScript中,它可能是一个对象(有时也可能是Map );在许多其他语言中,它可能是某种映射或字典。PHP称它们为数组。

无论哪种方式,如果您访问file参数(我不是“做”Laravel,所以我不知道您是如何做到的),您可以像这样获得id:$file[id]。看一下Laravel docs,看起来应该是:

代码语言:javascript
复制
$file = $request->input('file');
$id = $file['id'];
票数 2
EN

Stack Overflow用户

发布于 2020-12-04 16:03:15

您可以通过以下方式获取$request的数据:

代码语言:javascript
复制
$file = $request->input('file');
$file['id'];

//Or

$fileId = $request->input('file.id');
票数 0
EN

Stack Overflow用户

发布于 2021-09-18 20:10:00

Request $request传递的是数组而不是object实例,因此,您只能像这样访问:

代码语言:javascript
复制
$request->input('file')['id']

或

代码语言:javascript
复制
$request->file['id']

或

代码语言:javascript
复制
$request->input('file.id')

或者,仅文件字段

代码语言:javascript
复制
$request-all()[0]['file']['id']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65139808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档