@Valera221
Делаю сайты

Запрос fetch заменят плюсы из текста на пробел, как это исправить?

Здравствуйте, суть такая, запрос работает нормально, пост я получил, вот только ответ выглядит вот так "
array(1) {
["test"]=>
string(9) "LOL ggggg"
}
", там где должен быть +, просто пробел, а этот + который срезался, мне жизненно необходим,
мой код выглядит вот так:

fetch ("./src/database/userService/user.php",{
body: "test=LOL+ggggg",
cache: "no-cache",
headers: {'Content-type': 'application/x-www-form-urlencoded; charset=utf-8'},
method: "POST",
mode: "cors"
}).then( (response) => {
	if (response.status !== 200) {           
		return Promise.reject();
	}
	return response["text"]();
})


Подскажите в чем проблема и как решить ?
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега JavaScript
body: "test=" + encodeURIComponent("LOL+ggggg")
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@zkrvndm
Софт для автоматизации
Вы неправильно формируете тело запроса. Есть удобный конструктор для этого:
body: new URLSearchParams({ test: 'LOL+ggggg' }).toString(),

В конструктор URLSearchParams передаете объект с данными, которые хотите отправить, а дальше он сам преобразует этот объект в корректную строку текста полностью соответствующую формату application/x-www-form-urlencoded

Кстати, вы могли бы упростить код, если бы использовали async / await:
async function send(obj) {

	var response = await (await fetch('./src/database/userService/user.php', {
		body: new URLSearchParams(obj).toString(),
		cache: 'no-cache',
		headers: { 'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8' },
		method: 'POST',
		mode: 'cors'
	})).text();
	
	console.log('Ответ сервера:', response);
	
}

send({ test: 'LOL+ggggg' });
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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