Объясните простыми словами новичку в javascript, куда передаются данные через fetch
Данные передаются из браузера (он же клиент) передаются на сервер.
Постоянно вижу разные примеры кода и везде прописывают файл назначения разным
Это не файл, это url - адрес на сервере, от которого любым способом запустится какой-то скрипт, который сможет сформировать ответ для браузера (то есть для клиента).
Если в url указан путь к файлу на сервере, то сервер может отдать статичный файл - но для сервера не принципиально, что отдавать по какому url, можно настроить любые правила взаимодействия.
А ловят данные вообще через какой-то "php://input"
Сервер ловит обращение по url (он же запрос), выясняет по настройкам, что нужно сделать: запустить серверный скрипт, отдать статичный файл или ответить каким-нибудь статусом (например, 404). Если по url запрос попадает на запуск скрипта, то в этом скрипте вы можете обработать параметры запроса. Параметры запроса как правило вылавливают в $_GET или $_POST, либо парсят часть url, либо в дополнение смотрят вложения $_FILES.
Либо в вашем варианте смотрят сырцы запроса через
php://input, если что-то нестандартное нужно обработать.
Тогда зачем вообще эти файлы, которые указывают в Fetch? Причем одни с абсолютным адресом, другие с относительным, где-то указывают расширение (html, json и т.д.), где-то вообще без него.
Сервер может отдать разные данные клиенту. Где-то их можно забрать из файла статично, где-то сгенерировать ответ серверным скриптом динамично. А можно на статичные пути генерить динамичные данные, по виду url это мало чего говорит.
Нужно создавать файл какой-то на сервере в который якобы будет передаваться эта информация из JS через POST запрос?
Да, на сервере должен быть скрипт, который сформирует ответ, если для клиента нужно сформировать нечто динамическое, зависящее от параметров запроса.
Я создаю, у меня не выходит ничего, значение, при чтении этого файла или php://input (file_get_contents("php://input")) после передачи POST пустое.
Указываете на клиенте метод POST - на сервере ловите параметры методом POST он будет в $_POST.
Отправляете параметры GET или вшиваете их в url - ловите параметры на сервере в $_GET.
Вкладываете файл на клиенте - получаете атрибуты файлов на сервере в $_FILES.
Все просто.
На клиенте:
fetch('/foranswer.php', { //указываете скрипт на сервере, который сформирует ответ для клиента
method: 'POST',
headers: {
'Content-Type': 'text/plain'
},
body: player.signature
});
На сервере:
Скрипт foranswer.php
<?php
var_dump($_POST); // Посмотрите, а что вообще пришло в пост параметрах.
// Например, вам нужен параметр param1, забираем его значение из поста
$param1 = isset($_POST['param1']) ? $_POST['param1'] : null;
// Если param1 задан - что-то делаем
if(!is_null($param1))
{
// Например, при наличии параметра param1 нужно прочитать некий ресурс на сервере
$out = file_get_contents("/file.txt");
// и отдать его содержимое клиенту
echo $out;
}
else
{
// Нет обязательного параметра, отдаем ответ клиенту, что что-то не так.
echo "Нужен обязательный параметр param1";
}
?>