PHP Post array empty on axios POST PHP Post array empty on axios POST php php

PHP Post array empty on axios POST


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)});


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.


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.