Les paramètres POST d'Axios ne remplissent pas $_POST
Lors de l'utilisation d'Axios pour effectuer une requête POST avec une charge utile composée de données JSON, PHP peut ne pas interpréter correctement les paramètres de $_POST ou $_REQUEST. Au lieu de cela, les données de la requête sont souvent accessibles via file_get_contents("php://input").
Cause première :
Par défaut, Axios sérialise les objets JavaScript en JSON. . Cependant, PHP ne prend pas en charge JSON comme format de données natif pour la population $_POST. Il n'accepte que les formats traitables par machine pris en charge par les formulaires HTML :
Solution :
Pour résoudre ce problème, vous pouvez modifier la requête Axios pour envoyer des données au format application/x-www-form-urlencoded, que PHP peut gérer correctement. Il existe deux options principales :
1. Utilisation de l'API URLSearchParams (navigateur uniquement) :
var params = new URLSearchParams(); params.append('param1', 'value1'); params.append('param2', 'value2'); axios.post('/foo', params);
2. Utilisation de la bibliothèque qs (Node.js) :
var qs = require('qs'); axios.post('/foo', qs.stringify({ 'bar': 123 }));
Ces méthodes garantissent que les données de la requête sont correctement sérialisées au format application/x-www-form-urlencoded, les rendant accessibles via $_POST dans PHP.
Vous pouvez également modifier PHP pour gérer JSON comme format de données valide pour $_POST, mais cette approche est moins recommandée.
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!