Maison >développement back-end >tutoriel php >Pourquoi mes variables AngularJS $http.post() ne sont-elles pas définies dans mon script PHP ?

Pourquoi mes variables AngularJS $http.post() ne sont-elles pas définies dans mon script PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-22 16:22:14547parcourir

Why are my AngularJS $http.post() variables undefined in my PHP script?

AngularJS : HTTP POST Variables non définies avec PHP

Lors de la soumission d'un formulaire AngularJS en utilisant $http.post(), variables reçues par le PHP le script peut apparaître comme indéfini, malgré la réception d'un 200 OK réponse.

Causes

Par défaut, AngularJS définit l'en-tête Content-Type sur application/json pour les requêtes HTTP POST. Cependant, si une charge utile codée sous forme de formulaire est envoyée à la place des données JSON, PHP ne remplira pas le tableau $_POST comme prévu.

Solutions

Il existe deux solutions principales :

  1. Utiliser le JSON par défaut En-tête :

    • Conservez l'en-tête Content-Type par défaut de application/json.
    • En PHP, lisez l'entrée brute et désérialisez les données JSON à l'aide de json_decode().
  2. Envoyer le formulaire codé Données :

    • Définissez l'en-tête Content-Type sur application/x-www-form-urlencoded.
    • Formez manuellement une chaîne de requête telle que email=example@email. com&password=secret et envoyez-le en tant que charge utile de données.
    • Assurez-vous d'encoder l'URL de la chaîne de requête à l'aide de encodeURIComponent().

Exemple PHP modifié

Pour la deuxième solution :

$query_string = file_get_contents("php://input");
parse_str($query_string, $data);
$email = $data['email'];
$password = $data['password'];

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