C'est ainsi que je soumets le formulaire
$http({
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
method: 'POST',
url: url,
data: {
type: 1
}
})
Pourquoi mon serveur reçoit-il quelque chose comme ça ?
{ '{"type":1}': '' }
Problème résolu
Raison :
Par défaut, jQuery transmet les données en utilisant Content-Type : x-www-form-urlencoded et la sérialisation familière foo=bar&baz=moe, cependant, transmet les données en utilisant Content-Type : application/json et { "foo": "bar. ", "baz": "moe" } Sérialisation JSON
Par défaut, jQuery transmet les données en utilisant Content-Type : x-www-form-urlencoded et une séquence similaire à "foo=bar&baz=moe", cependant AngularJS transmet les données en utilisant Content-Type : application/json et { " foo": "bar", "baz": "moe" } une telle séquence json.
Solution
Peut-être que vous êtes habitué à utiliser jquery,
jquery encapsule l'opération query_string
Ajoutez simplement ce code à angulaire et changez le nom de l'exemple
1. Lisez la documentation officielle d'angularjs pour comprendre son utilisation. Il semble que l'en-tête de $http soit un peu différent.
2. Téléchargez l'outil Fiddler et affichez des informations telles que les en-têtes et les paramètres de requête.
Le serveur ne peut pas l'obtenir directement en utilisant $_REQUEST/$_POST, mais doit utiliser :
$params = json_decode(file_get_contents('php://input'),true);
Pour obtenir les données de soumission