Я задавал этот вопрос раньше и не смог получить ответ. Я был в состоянии использовать метод: «получить», как показано ниже, чтобы заставить его работать, так что все было в порядке, но на этот раз мне нужно использовать сообщение. В другом проекте (использующем реагировать, редукс, 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 зависит от того, как вы обслуживаете этот файл на своем веб-сервере.
В качестве альтернативы на стороне клиента вы можете массировать данные в JavaScript перед их отправкой, устраняя необходимость редактирования данных POST на стороне сервера:
var formatAxiosPostData = function (obj) {
// Create formData object:
var formDataObject = new FormData();
// This step necessary when the obj contains additional overhead data,
// such as what's created on a 'this.$data' Vue.js object:
obj = JSON.parse(JSON.stringify(obj));
// Fill formData object with the key-value pairs:
Object.keys(obj).forEach(function (key) {
formDataObject.append(key, obj[key]);
});
return formDataObject;
};
// example usage:
axios({
url: "/projects/myProject/server/register.php",
method: 'post',
data: formatAxiosPostData(values)
}).then(function (response){
console.log(response.data);
});