#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, который не включен в заголовок, чтобы предотвратить любые прямые обращения, и проблема решена.