PageUp
@PageUp
Default

Куда передаются и как извлечь данные через FETCH()?

Объясните простыми словами новичку в javascript, куда передаются данные через fetch
Во временный файл, но в который не проходит запись, или куда?
Постоянно вижу разные примеры кода и везде прописывают файл назначения разным

fetch('http://some-site.com/cors-enabled/some.json', {mode: 'cors'})

или
fetch('users').then(function(response) {

А ловят данные вообще через какой-то "php://input"
Тогда зачем вообще эти файлы, которые указывают в Fetch? Причем одни с абсолютным адресом, другие с относительным, где-то указывают расширение (html, json и т.д.), где-то вообще без него.

Нужно создавать файл какой-то на сервере в который якобы будет передаваться эта информация из JS через POST запрос? Я создаю, у меня не выходит ничего, значение, при чтении этого файла или php://input (file_get_contents("php://input")) после передачи POST пустое.
------------------------------------------------------------------------------
Я хочу извлечь в PHP файле значение body
Тут формирую тело и отправляю.

ysdk.getPlayer({
                                        signed: true
                                    }).then(_player => {
                                        player = _player;
                                        console.log(player.signature);
                                        // Используйте player.signature для авторизации на своем сервере.
                                        fetch('users', {
                                            method: 'POST',
                                            headers: {
                                                'Content-Type': 'text/plain'
                                            },
                                            body: player.signature
                                        });
                                    }).catch(err => {
                                        // Ошибка при инициализации объекта Player.
                                    });


Как мне на этой же странице извлечь данные?
Я создал пустой файл users в том же месте, где лежит страница со скриптами отправки и приема данных.

Этот код дает пустой результат ""
$input = file_get_contents("users");
И этот тоже пустой:
$input = file_get_contents("php://input");
--------------------------------------------------------------------------------------------------------
Читал статьи по этому методу вопросов стало еще больше. Простыми словами или лучше на простом примере можете объяснить как передаются и изымаются данные путем Fetch()?
  • Вопрос задан
  • 208 просмотров
Решения вопроса 1
@alexalexes
Объясните простыми словами новичку в 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";
}
?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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