Maison >interface Web >js tutoriel >Comment publier des données de formulaire codées en URL avec le service $http d'AngularJS ?

Comment publier des données de formulaire codées en URL avec le service $http d'AngularJS ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-11 05:16:111017parcourir

How to POST URL-Encoded Form Data with AngularJS's $http Service?

Publication de données de formulaire codées en URL avec $http dans AngularJS

Comprendre le problème

En tant que nouvel utilisateur d'AngularJS, vous avez rencontré des difficultés lors de l'envoi de données au serveur à l'aide du service $http. Plus précisément, vous avez rencontré des problèmes lorsque vous avez tenté d'envoyer des données au format codé en URL.

La solution

Pour résoudre ce problème, vous devez convertir vos données en URL. paramètres au lieu de chaînes JSON. Ben Nadel explique cela dans son blog :

By default, the $http service will transform the outgoing request by serializing the data as JSON and then posting it with the content-type, "application/json". When we want to post the value as a FORM post, we need to change the serialization algorithm and post the data with the content-type, "application/x-www-form-urlencoded".

Exemple

Voici un exemple qui montre comment publier des données de formulaire codées en URL à l'aide de $http :

$http({
    method: 'POST',
    url: url,
    headers: {'Content-Type': 'application/x-www-form-urlencoded'},
    transformRequest: function(obj) {
        var str = [];
        for(var p in obj)
        str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
        return str.join("&");
    },
    data: {username: $scope.userName, password: $scope.password}
}).then(function () {});

Mise à jour pour AngularJS v1.4 et Plus tard

Pour AngularJS v1.4 et versions ultérieures, vous pouvez tirer parti des nouveaux services disponibles pour obtenir le même résultat :

$http({
    method: 'POST',
    url: url,
    headers: {'Content-Type': 'application/x-www-form-urlencoded'},
    transformRequest: $httpParamSerializer
});

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