Не удается обработать данные тела axios.post vuejs в операторе php if

#javascript #php #vue.js #axios

#javascript #php #vue.js #axios

Вопрос:

Я пытался отправить тело с одним параметром, используя, axios.post но не могу получить тело в php, используя, $requestBody['action'] поэтому я проверил вкладку консоль и сеть в chrome dev tools и обнаружил, что тело задано правильно, data: "{"action":"GetOperator"}" но я не могу обработать его в if() , потому if() что тело не будет выполняться, поэтому я попытался проверить это var_dump() с его помощьювозвращает null

Скрипт Vuejs

 let actionOrder = new FormData();

                        actionOrder.append('action', 'GetOperator');

                        axios.post(BaseUrl   'core/core.php',actionOrder)

                          .then((res) => {

                            console.log(res);

                            this.loading = false;

                          })

                          .catch((error) => {

                            console.log(error);

                          });
 

PHP

  $requestBody = file_get_contents('php://input');
 $requestBody = json_decode($requestBody, true);

    if($requestBody['action'] == 'GetOperator'){
    echo 'executed';
    }
 

Комментарии:

1. Что именно вы сделали var_dump? Вы начали с того, что file_get_contents('php://input') на самом деле вернулось, или вы проверили только после того, как уже пытались расшифровать это как JSON? Не выполняйте несколько шагов за один раз, а затем проверяйте только конечный результат.

2. @CBroe я попытался выполнить if() оператор, который я не смог, и попытался отладить его, используя var_dump($requestBody['action']) , и он возвращает NULL

3. Здесь вы выполняете несколько операций, каждая из которых может пойти не так сама по себе (или вернуть неожиданные результаты). Поэтому отлаживайте каждый из этих шагов, а не только конечный результат. Начните с проверки того, что чтение из php://input фактически возвращено — прежде чем пытаться декодировать то, что на данный момент может уже не быть JSON, как JSON.

4. @CBRO var_dump(file_get_contents('php://input')); показывает string(0) ""

5. Это означает, что либо браузер не отправил никаких данных для файла, либо HTTP-заголовок Content-Type неверен.

Ответ №1:

Проблема возникла из core.php -за того, что для отправки тела данных в файл в axios.post в этой строке axios.post(BaseUrl 'core/core.php',actionOrder) указано, что оно было включено в header.php файл, поэтому core.php дважды загружалось в браузере, и данные были потеряны.

Поэтому я переместил if() и другие операции в отдельный файл php, который не включен в заголовок, чтобы предотвратить любые прямые обращения, и проблема решена.