Hice esta pregunta antes y no pude obtener una respuesta. Pude usar el método: 'obtener' como se muestra a continuación para que funcione, así que estuvo bien, pero esta vez necesito usar la publicación. En un proyecto diferente (usando react, redux, php, webpack, xampp) ha resurgido el mismo problema y estoy tratando de resolverlo. Asi que aqui esta:
registro.php
echo $_GET['task'];índice.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)})Cuando hago lo anterior, todo está bien y los datos se cierran como 'hacerAlgo'. Sin embargo, cuando intento usar axios({método: 'POST'}) y cambiar el php a $_POST['tarea'] aparece un error que dice que $_POST['tarea'] no está definido como se muestra a continuación:
índice.js
axios({ url: "/projects/myProject/server/register.php", method: 'post', data: values }).then(function(response){console.log(response.data)})registro.php
echo $_POST['task'];Aviso : índice indefinido: tarea
Además, cuando intento esto usando axios.post() encuentro exactamente el mismo problema. Quiero usar una solicitud de publicación aquí. ¿Alguien puede arrojar algo de luz sobre esto para mí?
De acuerdo, después de rascarme la cabeza bastante, encontré una respuesta. En PHP, esta línea debe agregarse antes de poder acceder a cualquier dato POST:
$_POST = json_decode(file_get_contents('php://input'), true); echo $_POST['task'];Según tengo entendido, los datos que se ingresan desde axios son JSON, por lo que debemos devolverlos en una cadena codificada en JSON usando file_get_contents() y luego convertir esto en una variable php de la cadena codificada en JSON usando json_decode. Espero que esto ayude a alguien más. Gracias.
Tu URL tiene un formato incorrecto: es una ruta, no una URL. Tiene que usar una URL relativa (/register.php) o absoluta ( http://localhost/register.php ) dependiendo de cómo sirva este archivo con su servidor web.
Como alternativa, en el lado del cliente puede manipular los datos en el JavaScript antes de publicarlos, eliminando la necesidad de editar los datos POST en el lado del servidor:
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); });