I want to send JSON data (in this case is client timestamp) to my server. However, my code seem doesn't work as I expect.
My idea is using fetch to send FormData (which contain an input has JSON as value) to the PHP. At the server side, PHP will take care the form with $_POST
and return JSON string to me.
I'm using a free host service, which has PHP 7.0, for testing stuff.
All of the code below is in the same file (404.php):
var now = new Date();
var pkg = JSON.stringify({
ts: now.getTime(),
tz: now.getTimezoneOffset() / -60
})
var form = new FormData();
form.set('json', pkg);
console.log(form.has('json')) // true
console.log(form.values().next()) // return and obj contain JSON string
fetch('/404.php', {
method: 'POST',
body: form
});
$json = null;
if(isset($_POST['json'])) $json = json_decode($_POST['json']);
var_dump($_POST); //Result: array(0) { }
As you can see, the output of var_dump is an empty array. But what I expect to see is an output with a JSON string.
I've tried another way, which is this one fetch-api-json-php, but it also no use. All the resource I found on the Internet usually about the classic AJAX, not fetch API. And most of them are only for client side, there isn't much I could find for PHP/server side.