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 résultats indéfinis 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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3