Ошибка при отправке POST запроса на open server?
Всех приветствую, что мне делать если при отправке POST запроса на open server появляется ошибка "Unexpected end of JSON input", но во вкладке сеть статус запроса 200. Вот сам код функции
async function postDataFormRegistration() { const res = await fetch('db.json', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ user: { name: nameInput.value, surname: surnameInput.value, login: loginInput.value, email: emailInput.value, password: repeatPassInput.value, age: ageInput.value } }), }) .then(response => console.log(response.json())) .then(() => {}) .catch(error => console.error('Error:', error)); return res; }; |
async function postDataFormRegistration() { const res = await fetch('db.json', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ user: { name: nameInput.value, surname: surnameInput.value, login: loginInput.value, email: emailInput.value, password: repeatPassInput.value, age: ageInput.value } }), }) .then(response => console.log(response.json())) .then(() => {}) .catch(error => console.error('Error:', error)); return res; };
Заранее спасибо!
Дополнительно:
Приложите трейс ошибки с указанием строки, которая это вызывает и уменьшите код, оставив только блок, имеющий отношение к вопросу. И приложите данные, которые уходят и которые приходят при запросе.
У телепатии есть свои пределы
{ user: { name: nameInput.value, surname: surnameInput.value, login: loginInput.value, email: emailInput.value, password: repeatPassInput.value, age: ageInput.value } } |
{ user: { name: nameInput.value, surname: surnameInput.value, login: loginInput.value, email: emailInput.value, password: repeatPassInput.value, age: ageInput.value } }
вполне может не получить какое то из значений и по этому выдавать ошибку. Рекомендую проверить что отправляет ваш запрос.
Проблема скорее всего тут .then(response => console.log(response.json())). И скорее всего в том, что твой сервер по адресу db.json отдаёт вместо json какую-то фигню. Открой вкладку Сеть в инструментах разработчика и посмотри, что тебе от сервера в ответ на твой POST приходит.
- Я посмотрел статус запроса 200, всё приходит, но не добавляется в базу
- NikitaSemenov21, Читать умеешь? Смотри тело ответа, а не статус запроса.
- ThunderCat В ответе ничего не приходит
- NikitaSemenov21, ну вот. А должно? Если должно - исправляй сервер. Если не должно - зачем ты тогда пытаешься превратить ничего в json?
- Aetae, Я использую Open server
https://ospanel.io/
это локальный веб-сервер который поддерживает POST запросы
- *исправляй сервер серверный код
NikitaSemenov21, любой сервер поддерживает POST запросы. Что на них отвечать только решаешь ты на каком-то серверном языке, а не сам сервер - он только средство доставки.
P.S. Всем пофиг что за сервер вы используете, никто его ставить не будет и разбираться. Вопрос лишь в том что вы хотите получить и чем это отличается от того что получается.
- Aetae, Спасибо тебе большое что подсказал!
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для отправки POST запроса на Open Server необходимо убедиться, что все параметры запроса правильно настроены и сервер корректно обрабатывает такие запросы.
Во-первых, убедитесь, что у вас правильно настроен файл .htaccess на сервере. В нем должны быть указаны правила для корректного обработки POST запросов. Например, для PHP скриптов нужно добавить следующие строки:
RewriteEngine On RewriteCond %{REQUEST_METHOD} ^POST$
Также убедитесь, что на сервере включена поддержка POST запросов. Для этого проверьте конфигурационные файлы сервера (например, php.ini) и убедитесь, что параметр post_max_size установлен на достаточно большое значение, чтобы обработать ваш запрос.
Если у вас используется PHP скрипт для обработки POST запросов, убедитесь, что в самом скрипте правильно обрабатываются данные из POST запроса. Например, чтобы получить данные из POST запроса в PHP, используйте следующий код:
if ($_SERVER['REQUEST_METHOD'] === 'POST') { $data = $_POST['data']; // дальнейшая обработка данных }
Также стоит проверить, что ваш запрос отправляется на правильный URL сервера и порт. Убедитесь, что в вашем коде указан правильный URL и порт сервера, на который нужно отправить запрос.
Если после всех этих действий ошибка при отправке POST запроса на Open Server все еще возникает, попробуйте использовать инструменты для отладки HTTP запросов, например, Postman или cURL, чтобы проверить, что запрос правильно формируется и отправляется на сервер.
Надеюсь, эти советы помогут вам решить проблему с отправкой POST запроса на Open Server. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.