Angular HTTP POST vers PHP : gérer les valeurs POST non définies
Dans AngularJS, l'exécution de requêtes HTTP POST vers des points de terminaison PHP peut parfois entraîner des valeurs indéfinies Valeurs POST côté serveur. Cela peut se produire lorsqu'il y a une incompatibilité entre le format de données attendu et les données réelles envoyées par l'application Angular.
Pour résoudre ce problème, il est crucial de s'assurer que l'en-tête Content-Type est défini de manière appropriée. Par défaut, AngularJS définit cet en-tête sur « application/json ». Cependant, si vous envoyez des données codées sous forme de formulaire, cela doit être remplacé.
Dans le code fourni, la ligne suivante définit l'en-tête Content-Type sur "application/x-www-form-urlencoded; charset=UTF-8":
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
Cependant, cela nécessite de modifier les données envoyées pour qu'elles correspondent au format encodé du formulaire. Au lieu d'envoyer les données sous forme d'objet, elles doivent être converties en chaîne de requête. Cela peut être fait en utilisant jQuery.serialize() ou en créant manuellement la chaîne de requête avec encodeURIComponent().
Alternativement, si vous préférez utiliser la fonctionnalité $_POST de PHP, vous pouvez conserver le paramètre d'en-tête par défaut et modifier le Code PHP pour lire l'entrée brute du corps de la requête et décoder le JSON. Ceci peut être réalisé avec le code suivant :
$postdata = file_get_contents("php://input"); $request = json_decode($postdata); $email = $request->email; $pass = $request->password;
En alignant le format des données et les paramètres d'en-tête, vous pouvez vous assurer que les valeurs POST sont correctement reçues côté 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!