Задать вопрос
@N4sky1

При отправке данных из js через fetch, php код не исполняется, в чем причина?

Привет, вопрос возможно простой, но я новичок в php, отправляю из js данные через fetch

async function sendData(title)	{
    let data = new FormData()
    data.append('title', title)
    fetch('/message.php', {
      method: 'POST',
      body: data
    })
}


Есть страница message.php, на которой в инпутах я собираю данные и с помощью js отправляю, на данной странице есть скрипт php

if(isset($_POST["title"])){
        echo "1";
    }
    if($_SERVER['REQUEST_METHOD'] === 'POST'){
       echo "2";
    }
    if(!empty($_POST)){
        echo "3";
    }

    if($_POST !== null){ 
        echo "4";
    }

и при загрузке страницы мне сразу выводится "4"
а при отправке данных из js в инструментах разработчика я вижу в поле network появляется message.php, где видно что это запрос post и данные там есть которые я отправляю, но скрипт php как будто работает один раз при загрузке страницы и все, как сделать чтобы при отправке данных скрипт php отслеживал это ?
  • Вопрос задан
  • 327 просмотров
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 2
@alexalexes
В message.php:
var_dump(date('d.m.Y H:i:s'));
var_dump($_POST);
exit();

Посмотрите, меняется ли время и содержание поста. Если один раз, а потом не меняется, то копайте заголовки кеша для браузера.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
и при загрузке страницы мне сразу выводится "4"
Логично, так как пост пустой, а не нулл, а в остальных случаях срабатывают проверки на метод пост(вызванные через гет) и непустые пост поля, которые как бы пустые при методе гет.

но скрипт php как будто работает один раз при загрузке страницы и все,
Скрипт пхп ВСЕГДА работает 1 раз. При каждом обращении вы создаете запрос, скрипт его отрабатывает и умирает.

как сделать чтобы при отправке данных скрипт php отслеживал это ?
Так он отслеживает, просто вы с этим отслеживанием ничего не делаете. Посмотрите ответ сервера в запросе к message.php, ну и сделайте в js обработку ответа фетч запроса какую-то... То что метод называется буквально "взять" вас не на какие мысли не наталкивает? ))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы