一尘不染

$ _POST无法读取Axios发布参数

php

所以我有这段代码:

axios({
    method: 'post',
    url,
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    data: {
        json,
        type,
    }   
})

最初我是正常人,axios.post但是我更改为这个,因为我认为这可能是标题问题。但是我仍然没有检测,我$_REQUEST也没有$_POST。但是,它正在接收数据file_get_contents("php://input")

知道有什么问题吗?

编辑

好吧,我想我知道怎么了。它将其作为json对象发布,因此只能在php:// input中读取。如何在axios中将其更改为普通字符串?


阅读 218

收藏
2020-05-29

共1个答案

一尘不染

文档中(我没有在引用的材料中保留链接):

使用application / x-www-form-urlencoded格式

默认情况下,axios将JavaScript对象序列化为JSON。要改为以application / x-www-form-
urlencoded格式发送数据,可以使用以下选项之一。

浏览器

在浏览器中,可以如下使用URLSearchParams API:

var params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);

请注意,并非所有浏览器都支持URLSearchParams,但是有可用的polyfill(确保对全局环境进行polyfill)。

另外,您可以使用qs库对数据进行编码:

var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 }));
2020-05-29