Question AngularJS transmet les données à la requête $ http.get


J'ai une fonction qui fait une requête http POST. Le code est spécifié ci-dessous. Cela fonctionne bien.

 $http({
   url: user.update_path, 
   method: "POST",
   data: {user_id: user.id, draft: true}
 });

J'ai une autre fonction pour http GET et je veux envoyer des données à cette demande. Mais je n'ai pas cette option à obtenir.

 $http({
   url: user.details_path, 
   method: "GET",
   data: {user_id: user.id}
 });

La syntaxe pour http.get est

get (url, config)

Quelqu'un peut il m'aider avec ça?


538
2017-12-07 09:16


origine


Réponses:


Une requête HTTP GET ne peut pas contenir de données à publier sur le serveur. Cependant, vous pouvez ajouter une chaîne de requête à la requête.

angular.http fournit une option pour cela appelé params.

$http({
    url: user.details_path, 
    method: "GET",
    params: {user_id: user.id}
 });

Voir: http://docs.angularjs.org/api/ng.$http#get et https://docs.angularjs.org/api/ng/service/$http#usage (montre le params param)


892
2017-12-07 09:34



Toi pouvez passer les params directement à $http.get() Le travail suivant fonctionne bien

$http.get(user.details_path, {
    params: { user_id: user.id }
});

495
2017-08-29 18:07



A partir de AngularJS v1.4.8, vous pouvez utiliser get(url, config)  comme suit:

var data = {
 user_id:user.id
};

var config = {
 params: data,
 headers : {'Accept' : 'application/json'}
};

$http.get(user.details_path, config).then(function(response) {
   // process response here..
 }, function(response) {
});

37
2017-12-28 07:04



Solution pour ceux qui sont intéressés par l'envoi de params et d'en-têtes dans une requête GET

$http.get('https://www.your-website.com/api/users.json', {
        params:  {page: 1, limit: 100, sort: 'name', direction: 'desc'},
        headers: {'Authorization': 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='}
    }
)
.then(function(response) {
    // Request completed successfully
}, function(x) {
    // Request error
});

Exemple de service complet ressemblera à ceci

var mainApp = angular.module("mainApp", []);

mainApp.service('UserService', function($http, $q){

   this.getUsers = function(page = 1, limit = 100, sort = 'id', direction = 'desc') {

        var dfrd = $q.defer();
        $http.get('https://www.your-website.com/api/users.json', 
            {
                params:{page: page, limit: limit, sort: sort, direction: direction},
                headers: {Authorization: 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='}
            }
        )
        .then(function(response) {
            if ( response.data.success == true ) { 

            } else {

            }
        }, function(x) {

            dfrd.reject(true);
        });
        return dfrd.promise;
   }

});

31
2017-12-11 15:39



Vous pouvez même simplement ajouter les paramètres à la fin de l'URL:

$http.get('path/to/script.php?param=hello').success(function(data) {
    alert(data);
});

Jumelé avec script.php:

<? var_dump($_GET); ?>

Résultant de l'alerte javascript suivante:

array(1) {  
    ["param"]=>  
    string(4) "hello"
}

4
2017-09-25 11:31



Pour l'envoi obtenir la requête avec le paramètre que j'utilise

  $http.get('urlPartOne\\'+parameter+'\\urlPartTwo')

Par ceci vous pouvez utiliser votre propre chaîne d'URL


1
2018-03-30 07:03



Voici un exemple complet de requête HTTP GET avec des paramètres utilisant angular.js dans ASP.NET MVC:

MANETTE:

public class AngularController : Controller
{
    public JsonResult GetFullName(string name, string surname)
    {
        System.Diagnostics.Debugger.Break();
        return Json(new { fullName = String.Format("{0} {1}",name,surname) }, JsonRequestBehavior.AllowGet);
    }
}

VUE:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script type="text/javascript">
    var myApp = angular.module("app", []);

    myApp.controller('controller', function ($scope, $http) {

        $scope.GetFullName = function (employee) {

            //The url is as follows - ControllerName/ActionName?name=nameValue&surname=surnameValue

            $http.get("/Angular/GetFullName?name=" + $scope.name + "&surname=" + $scope.surname).
            success(function (data, status, headers, config) {
                alert('Your full name is - ' + data.fullName);
            }).
            error(function (data, status, headers, config) {
                alert("An error occurred during the AJAX request");
            });

        }
    });

</script>

<div ng-app="app" ng-controller="controller">

    <input type="text" ng-model="name" />
    <input type="text" ng-model="surname" />
    <input type="button" ng-click="GetFullName()" value="Get Full Name" />
</div>

1
2018-05-18 07:32