При отправке JSON методом POST через Fetch, соответствующий массив в PHP остаётся пустым
Я создаю веб-приложение, включающее в себя возможность регистрации и последующей авторизации, в целях обучения. Суть проблемы такова: при нажатии на кнопку выхода из аккаунта на сервер должен отправиться запрос для закрытия сессии. В тело запроса записываю короткий JSON. В chrome dev tools видно, что запрос уходит с данными, ответ от сервера приходит, но массив POST в PHP остаётся пустым. Самое, на мой взгляд, странное - это то, что, если создать пустой FormData и добавить в него те же данные, а затем отправить, то массив POST пополнится как и задумано.
Вот этот вариант не работает:
exitLink.addEventListener('click', async (e) => {
e.preventDefault()
localStorage.clear()
const sBody = { 'exit': 1 }
response = await fetch('/scripts/php/setSessionData.php',{
method: 'POST',
body: JSON.stringify(sBody),
headers: {
'Content-Type': 'application/json;charset=utf-8'
}
})
})
А вот этот почему-то работает:
exitLink.addEventListener('click', async (e) => {
e.preventDefault()
localStorage.clear()
fd = new FormData()
fd.append('exit','1')
response = await fetch('/scripts/php/setSessionData.php',{
method: 'POST',
body: fd
})
})
Вот принимающий PHP-файл:
<?
session_start();
if(isset($_POST['exit'])){
session_abort();
$stat = false;
}
else {
$_SESSION['auth'] = true;
$_SESSION['login'] = $login;
$_SESSION['role'] = 'user';
$stat = true;
}
echo json_encode(array(
'stat' => $stat
));
Используется локальный сервер Apache.
Буду признателен, если кто-нибудь расскажет почему у меня не получается отправить данные в JSON формате. А ещё, есть сомнения по поводу данной реализации выхода из аккаунта. Поделитесь опытом, кто сталкивался с подобным.