I\'m trying out Vue 2.0 and axios and I\'ve got a little issue. When I try to send a post request using axios to my post.php file the $_POST array is always empty.
Post
For me the problem was that I was using http instead of https in the url. The server returned http status code Permanently moved (to the https site). A browser or command line client (curl) follow these redirects. My code did not. Solution was to use https in the url.
The data that is send with axios is not put into PHP's $_POST
.
Instead, it is in the request body and most likely in json format.
To get it, try the following code:
function getRequestDataBody()
{
$body = file_get_contents('php://input');
if (empty($body)) {
return [];
}
// Parse json body and notify when error occurs
$data = json_decode($body, true);
if (json_last_error()) {
trigger_error(json_last_error_msg());
return [];
}
return $data;
}
$data = getRequestDataBody();
var_dump($data)
Or you could use FormData
like the other answer suggests.
I think you can try this, it should be the data-type problem.
var data = new FormData();
data.append('title', 'foo');
data.append('body', 'bar');
axios.post('api/post.php', data)
.then(response => {
console.log(response)
console.log(response.data)
this.filter = response.data
})
.catch(e => {
this.errors.push(e)
});