爱可信发布PARAMS没有$ _ POST阅读爱可信发布PARAMS没有$ _ POST阅读(Axi

2019-05-12 02:02发布

所以我有这样的代码:

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读取://输入。 如何将其更改为在爱可信正常的字符串?

Answer 1:

从文档 (我没有保存在所列出的材料链接):

使用应用程序/ X WWW的form-urlencoded格式

默认情况下,爱可信序列化JavaScript对象到JSON。 要在应用程序/ x-WWW-form-urlencoded格式发送数据,而不是,您可以使用下列选项之一。

浏览器

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

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

需要注意的是URLSearchParams并不被所有的浏览器都支持,但有可用的填充工具(确保填充工具全球环境)。

另外,您也可以使用QS库数据编码:

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


Answer 2:

var params = {
    data1: 'string',
}

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

要么

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

API

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


Answer 3:

您可以使用jQuery.param

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

您现在可以使用POSTDATA贵之后的参数



文章来源: Axios posting params not read by $_POST