Axios posting params not read by $_POST

2019-01-09 12:03发布

So I have this code:

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

Originally I had the normal axios.post but I changed to this because I thought it might have been a header problem. However I am still detecting nothing in my $_REQUEST nor $_POST. However, it is receiving data in file_get_contents("php://input").

Any idea what is wrong?

Edit

Okay I think I know what's wrong. It's posting it as a json object so it can only be read in the php://input. How do I change it to a normal string in axios?

3条回答
来,给爷笑一个
2楼-- · 2019-01-09 12:46

From the documentation (I haven't preserved links in the quoted material):

Using application/x-www-form-urlencoded format

By default, axios serializes JavaScript objects to JSON. To send data in the application/x-www-form-urlencoded format instead, you can use one of the following options.

Browser

In a browser, you can use the URLSearchParams API as follows:

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

Note that URLSearchParams is not supported by all browsers, but there is a polyfill available (make sure to polyfill the global environment).

Alternatively, you can encode data using the qs library:

var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 }));
查看更多
Root(大扎)
3楼-- · 2019-01-09 13:04
var params = {
    data1: 'string',
}

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

or

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

api

$_POST = json_decode(file_get_contents("php://input"),true);
echo $_POST['data1'];
查看更多
聊天终结者
4楼-- · 2019-01-09 13:08

You can use jQuery.param

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

You can now use postdata has your post parameter

查看更多
登录 后发表回答