Como dice el título, cuando haces un
axios.post('/user', { firstName: 'Fred', lastName: 'Flintstone' }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); }); Los datos estarán en un objeto JSON y, por lo tanto, no serán detectados por $_REQUEST y solo se pueden encontrar en php://input .
¿Hay alguna manera de cambiar esto? También intenté cambiar el content-type , pero eso no ayudó.
Esto es lo que se explica en la página de github axios :
De forma predeterminada, axios serializa objetos de JavaScript en JSON. Para enviar datos en el formato application/x-www-form-urlencoded, puede usar una de las siguientes opciones.
Navegador
En un navegador, puede usar la API URLSearchParams de la siguiente manera:
const params = new URLSearchParams(); params.append('param1', 'value1'); params.append('param2', 'value2'); axios.post('/foo', params);Tenga en cuenta que URLSearchParams no es compatible con todos los navegadores (consulte caniuse.com), pero hay un polyfill disponible (asegúrese de polyfill en el entorno global).
Alternativamente , puede codificar datos usando la biblioteca qs:
const qs = require('qs'); axios.post('/foo', qs.stringify({ 'bar': 123 }));O de otra manera (ES6) ,
import qs from 'qs'; const data = { 'bar': 123 }; const options = { method: 'POST', headers: { 'content-type': 'application/x-www-form-urlencoded' }, data: qs.stringify(data), url, }; axios(options);