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
Linda Hamiltonoriginal
2024-12-02 16:28:12933parcourir

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;

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!

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