MrAnderson1999
@MrAnderson1999
Секси

Как правильно отправить на сервер клиентский JSON?

Добрый вечер!
Подскажите, что я делаю не так?

Хочу полученные данные с браузера отправить на временное хранение на сервер в сессию.
Но после отправки, обновляя index.php, выдает, что $_SESSION['data'] не существует, хотя в консоле пишет, что соединение было и всё отправлено.

При запуски сессии из любого файла она получается распространяется на все страницы в течении 24 минут, пока мы снова не попадём на ту, где будет прописано session_start()?

index.php

let doc = {"name":"John", "password":"123"};

function sendJSON() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
     console.log("send");
    }
  };
  xhttp.open("POST", "json.php?json=" + JSON.stringify(doc), true);
  xhttp.send();
}


json.php

session_start();
if(isset($_POST['json']) {
    $_SESSION['data'] = json_decode($_POST['json']);
}
  • Вопрос задан
  • 114 просмотров
Решения вопроса 2
dimonchik2013
@dimonchik2013
non progredi est regredi
Фронт: Хром + F12 + Network
Бэк: https://httpbin.org/#/HTTP_Methods/post_post
Ответ написан
Комментировать
Kozack
@Kozack
Thinking about a11y
Полагаю проблема тут в том, что вы отправляете данные POST запросом, но эти данные передаёте не в теле а в GET параметре.

Попробуйте так:
fetch('json.php', {
        method: 'POST', // *GET, POST, PUT, DELETE, etc.
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify(doc), // тип данных в body должен соответвовать значению заголовка "Content-Type"
    })

var_dump($_POST); // Проверить что приходит на сервер
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы