Я задал этот вопрос раньше и не смог получить ответ. Я смог использовать метод «get», как показано ниже, чтобы заставить его работать, так что все в порядке, но на этот раз мне нужно использовать пост. В другом проекте (с использованием реакции, сокращения, php, webpack, xampp) одна и та же проблема всплыла, и я пытаюсь понять ее. Итак, вот оно:
register.php
echo $_GET['task'];
index.js
const values = {task: 'doSomething', username: 'username'} axios({ url: "./server/register.php", timeout: 20000, method: 'get', params: values }).then(function(response){console.log(response.data)})
Когда я делаю все, все в порядке, и данные выходят из системы как «doSomething». Однако, когда я пытаюсь использовать axios ({method: 'POST'}) и меняя php на $ _POST ['task'], я получаю сообщение об ошибке, что $ _POST ['task'] не определено, как показано ниже:
index.js
axios({ url: "/projects/myProject/server/register.php", method: 'post', data: values }).then(function(response){console.log(response.data)})
register.php
echo $_POST['task'];
Примечание . Неопределенный индекс: задача
Также, когда я пытаюсь это использовать с помощью axios.post (), я сталкиваюсь с одной и той же проблемой. Я хочу использовать почтовый запрос здесь. Может ли кто-нибудь пролить свет на это для меня?
Ладно, после того, как я почесал голову, я нашел ответ. На PHP эта строка должна быть добавлена до того, как я получу доступ к любым данным POST:
$_POST = json_decode(file_get_contents('php://input'), true); echo $_POST['task'];
По моему мнению, данные, вводимые из axios, – это JSON, поэтому мы должны вернуть его в кодированную JSON-строку с помощью file_get_contents (), а затем преобразовать это в переменную php из кодированной JSON-строки, используя json_decode. Надеюсь, это помогает кому-то другому. Спасибо.
У вас неправильный формат URL: это не URL-адрес. Вы должны использовать либо относительный (/register.php), либо абсолютный ( http: //localhost/register.php ) URL-адрес, зависит от того, как вы обслуживаете этот файл на своем веб-сервере.