Я использую следующий код javascript для выполнения HTTP-запроса:
function ready(path) {
fetch(path, {method : 'put'})
.then(function (response) {
console.info(response);
});
}
Этот запрос запускает на моем сервере следующую функцию:
/**
* @Route("/some/route/{playerName}", name = "ready")
* @param $playerName string
*/
public function toggleReady($playerName) {
$this->someService->readyUp($playerName);
$response = new Response(
'TOGGLE SUCCESS!',
Response::HTTP_OK,
array('content-type' => 'text/html'));
$response->send();
}
На стороне клиента вызывается then, который выводит ответ в консоль. Этот ответ содержит правильный код состояния, но тело пустое, а bodyUsed - это false. Как я могу правильно отправить желаемый контент / тело во фронтенд?
Также попробуйте следующее: .then (response => console.info ('Success:', JSON.stringify (response))) .catch (error => console.error ('Error:', error));
Насколько я понимаю, атрибут body для fetch устанавливает тело запроса и не влияет на то, какой ответ я получаю.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я думаю, вам нужно сделать это:
fetch(path, {method : 'put'})
.then(response => response.json())
.then(data => {
// Here's the content of the body
console.info(data)
});
«Оказывается, то, что мы запрашивали, скрыто в теле как читаемый поток. Нам нужно вызвать соответствующий метод, чтобы преобразовать этот читаемый поток в данные, которые мы можем потреблять.
В случае работы с GitHub мы знаем, что ответ - JSON. Мы можем вызвать response.json для преобразования данных.
Есть и другие методы работы с разными типами ответов. Если вы запрашиваете XML-файл, вам следует вызвать response.text. Если вы запрашиваете изображение, вы вызываете response.blob ".
Поскольку ваш заголовок Content-Type - это text/html, вам следует проанализировать тело ответа как текст с помощью метода .text(), который возвращает обещание:
fetch(path, { method: 'put' })
.then(response => response.text())
.then(body => console.info(body))
.catch(err => console.error(err));
Кроме того, text/plain будет более точным, чем text/html.
Вы пробовали использовать атрибут body вместе с атрибутом method? developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fet ch