Paramètres de publication Axios non disponibles dans les variables PHP
Cet extrait de code utilise la bibliothèque Axios pour effectuer une requête POST, en définissant l'en-tête Content-Type à application/x-www-form-urlencoded :
axios({ method: 'post', url, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, data: { json, type, } })
Cependant, les variables PHP équivalentes, $_POST et $_REQUEST, restent vides après la requête. Au lieu de cela, file_get_contents("php://input") semble recevoir les données.
Cause et solution
L'écart provient de la façon dont Axios sérialise les données par défaut . Il convertit les objets JavaScript en JSON, que PHP ne prend pas en charge nativement pour remplir $_POST. PHP n'accepte que les formats traitables par machine pris en charge par les formulaires HTML : application/x-www-form-urlencoded et multipart/form-data.
Pour résoudre ce problème, vous disposez de plusieurs options :
Navigateur :
Utilisez l'API URLSearchParams :
var params = new URLSearchParams(); params.append('param1', 'value1'); params.append('param2', 'value2'); axios.post('/foo', params);
Utilisez la bibliothèque qs :
var qs = require('qs'); axios.post('/foo', qs.stringify({ 'bar': 123 }));
Personnalisation de PHP :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!