fetch это promise, попробуй async/await:
document.addEventListener('DOMContentLoaded', function () {
async function UseFetch(requestData = {}) {
console.log('Получили объект', requestData);
console.log("Отправляемый JSON: ", JSON.stringify(requestData));
await fetch('api.php', {
method: 'POST', // or 'PUT'
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(requestData)
})
.then((result) => result.ok === true ? result.json() : false)
.then((data) => console.log("Success", data))
.catch(error => console.error("Error", error));
}
UseFetch({ 'path': 123, 'abc': 234 });
});
А еще, зачем ты декодируешь и потом кодируешь одни и те же данные? Там скорее всего и ошибка, попробуй так:
if($_POST !== null){
// var_dump($_POST);
$result = json_encode($_POST);
echo $result;
}else{
return false;
}