Axios发布的参数不是由$ _POST读取的

问题描述 投票:20回答:3

所以我有这个代码:

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://输入中读取。如何在axios中将其更改为普通字符串?

javascript php reactjs axios
3个回答
36
投票

来自the documentation(我没有保留引用材料中的链接):

Using application/x-www-form-urlencoded format

默认情况下,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可用(确保填充全局环境)。

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

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

11
投票
var params = {
    data1: 'string',
}

axios.post(url, params).then(function(response) {
    //code here 
});

要么

axios.post(url, {data1: 'string' }).then(function(response) {
    //code here 
});

$_POST = json_decode(file_get_contents("php://input"),true);
echo $_POST['data1'];

-1
投票

你可以使用jQuery.param

postdata = $.param({param1: 'value1', param2:'value2'})

你现在可以使用postdata有你的post参数

© www.soinside.com 2019 - 2024. All rights reserved.