$ _REQUEST получает параметры, но не $ _POST при использовании fetch api - PullRequest
0 голосов
/ 22 ноября 2018

Я использую fetch для отправки POST-запроса к бэкэнду 'ajax-admin.php', который затем перенаправляет на php-функцию, которую я имею в functions.php.Я решил заменить xmlHttpRequests на API 'fetch'.Я делаю почтовый запрос с fetch следующим образом:

fetch(url, {
        method: 'POST',

        credentials: "include",
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded'
        }


      })
    .then(res => res.json())
    .then(data => resolve(data)) // we call resolve with the data
    .catch(err => reject(err));

  });

Где строка запроса URL имеет вид: action=login&tokend_id=1234

И на стороне сервера я использую $ _POST дляполучить значение параметров «действие» и «token_id».Однако я вижу, что $ _POST пуст, в то время как у $ _REQUEST есть параметры.Поэтому, если я делаю $ _POST ['token_id'], я получаю сообщение об ошибке, потому что $ _POST пусто.Но если я сделаю $ _REQUEST ['token_id'], я получу значение этого параметра.

Есть идеи, почему это происходит?Почему параметры должны быть в $ _REQUEST, а не в $ _POST.

Я проверил, пусто ли $ _POST с этим оператором:

 if ( isset( $_POST ) && 0 === count($_POST) ) 

Спасибо

1 Ответ

0 голосов
/ 22 ноября 2018

Где строка запроса URL-адреса ...

На самом деле вы здесь отправляете запрос POST на URL-адрес со строкой запроса.Строка запроса анализируется и помещается в $_REQUEST и $_GET независимо от используемого метода HTTP .Однако $_POST может быть заполнен только фактическим POST запросом с телом запроса .

В вашем вызове fetch() укажите body: formData.formData может быть представлен в этом формате строки запроса или другими способами.Смотрите также: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#Body

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...