@photosho

Как правильно передать объект при помощи fetch?

Как правильно передать объект на сервер через "fetch" POST-запросом? Перепробовал разные варианты, остановился на преобразовании в "FormData":

var form = new FormData();
for (var i in data) {
  form.append(i, JSON.stringify(data[i]));
}

fetch('/mail.php', {
  method: 'POST',
  body: form
})
.then(function(response) {
  response.json().then(function(result) {
   ...
  });
});


Но такой вариант работает только с первым уровнем вложенности: если поле является объектом, то приходит на сервер в виде сериализованной строки. Можно как-то избежать рекурсивного обхода свойств объекта? А без "FormData", если передавать просто "body: JSON.stringify(data)", на сервер ничего не приходит. И варианты с разными заголовками тоже пробовал.
  • Вопрос задан
  • 642 просмотра
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
При передаче в виде JSON считывать на сервере значение из тела запроса надо самостоятельно, автоматически оно не парсится. Например, для PHP:
$jsonData = file_get_contents('php://input');
$data = json_decode($jsonDdata, true);

При отправке лучше устанавливать заголовок Content-Type: application/json
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы