Maison >interface Web >js tutoriel >Pourquoi mes variables POST AngularJS ne sont-elles pas définies dans mon script PHP ?
HTTP POST envoyé depuis AngularJS génère des variables POST non définies en PHP
Dans notre configuration, une application AngularJS envoie une requête HTTP POST à un PHP script, mais le script PHP reçoit des valeurs non définies pour le POST « email » et « mot de passe » paramètres.
Débogage de la cause
Le problème réside dans la non-concordance entre l'en-tête Content-Type envoyé par AngularJS et le format de données attendu par PHP. AngularJS utilise application/json comme en-tête Content-Type par défaut, mais le script PHP attend des données codées sous forme de formulaire.
Solution 1 : Utiliser Application/JSON en PHP
Une solution consiste à modifier l'en-tête Content-Type dans AngularJS en application/json et à utiliser file_get_contents("php://input") de PHP pour récupérer le corps de requête brut. Les données peuvent ensuite être désérialisées à partir de JSON.
$postdata = file_get_contents("php://input"); $request = json_decode($postdata); $email = $request->email; $pass = $request->password;
Solution 2 : Envoyer des données codées sous forme de formulaire
Alternativement, AngularJS peut être configuré pour envoyer des données codées sous forme de formulaire . Cela implique de créer une chaîne de requête manuellement ou d'utiliser jQuery.serialize(). La chaîne de requête doit ensuite être codée en URL et définie comme données de requête.
$email = $_POST['email']; $pass = $_POST['password'];
Méthodes obsolètes
Notez que les méthodes .success() et .error() mentionnés dans le code sont obsolètes. Utilisez plutôt .then().
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!