Maison > interface Web > js tutoriel > Pourquoi mes paramètres HTTP POST AngularJS ne sont-ils pas définis en PHP ?

Pourquoi mes paramètres HTTP POST AngularJS ne sont-ils pas définis en PHP ?

Linda Hamilton
Libérer: 2024-12-02 16:28:12
original
932 Les gens l'ont consulté

Why are my AngularJS HTTP POST parameters undefined in PHP?

Post HTTP AngularJS vers PHP : compréhension des valeurs « non définies »

De nombreux utilisateurs d'AngularJS rencontrent un problème lors de l'envoi de requêtes POST à ​​PHP, ce qui entraîne valeurs "non définies" pour les paramètres POST. Cet article plonge dans la cause profonde et propose des solutions pour résoudre ce problème.

Content-Type Header Default

La racine de ce problème réside dans le "Content-Type" par défaut. Type" en-tête utilisé par AngularJS pour les requêtes HTTP POST. Par défaut, AngularJS définit cet en-tête sur « application/json », indiquant que le corps de la requête doit être sérialisé en tant que données JSON.

Données codées par formulaire par rapport à JSON

Cependant, si votre code PHP attend des données codées sous forme de formulaire (c'est-à-dire des données au format "fieldname=value&fieldname=value"), il ne pourra pas pour remplir correctement le tableau $_POST. Pour résoudre ce problème, vous pouvez soit modifier votre script PHP pour lire le flux d'entrée brut au format JSON, soit ajuster votre code AngularJS pour envoyer des données codées sous forme de formulaire.

Solution 1 : lire l'entrée brute au format JSON en PHP

Cette solution implique de modifier votre code PHP pour lire les données brutes d'entrée au format JSON, les désérialiser et extraire les valeurs POST manuellement. Vous pouvez le faire en utilisant le code suivant :

$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$email = $request->email;
$pass = $request->password;
Copier après la connexion

Solution 2 : Envoyer des données codées par formulaire depuis AngularJS

Si vous préférez utiliser la fonctionnalité $_POST dans PHP, vous pouvez créer manuellement une chaîne de requête et l'envoyer comme données dans votre requête AngularJS. La chaîne de requête doit être au format « fieldname=value&fieldname=value » et elle doit être codée en URL. Vous pouvez utiliser encodeURIComponent() en JavaScript pour garantir un encodage correct.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal