Maison >interface Web >js tutoriel >Pourquoi mes variables POST AngularJS ne sont-elles pas définies dans mon script PHP ?

Pourquoi mes variables POST AngularJS ne sont-elles pas définies dans mon script PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-30 12:43:11127parcourir

Why Are My AngularJS POST Variables Undefined in My PHP Script?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn