592 Stimmen

AngularJS übergibt Daten an $http.get Anfrage

Ich habe eine Funktion, die eine http POST-Anforderung ausführt. Der Code ist unten angegeben. Dies funktioniert gut.

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

Ich habe eine andere Funktion für http GET und ich möchte Daten an diese Anforderung senden. Aber ich habe diese Option nicht in get.

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

Die Syntax für http.get ist

get(url, config)

959voto

fredrik Punkte 17337

Eine HTTP-GET-Anfrage kann keine Daten enthalten, die an den Server gesendet werden. Sie können der Anfrage jedoch eine Abfragezeichenfolge hinzufügen.

angular.http bietet dafür eine Option namens params .

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

Siehe: http://docs.angularjs.org/api/ng.$http#get y https://docs.angularjs.org/api/ng/service/$http#Verwendung (zeigt die params param)

529voto

Rob Punkte 12422

Sie kann params direkt an $http.get() Das Folgende funktioniert gut

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

45voto

Arpit Aggarwal Punkte 24466

Ausgehend von AngularJS v1.4.8 können Sie verwenden get(url, config) wie folgt:

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) {
});

34voto

Subodh Ghulaxe Punkte 17873

Lösung für diejenigen, die daran interessiert sind, Parameter und Kopfzeilen in einer GET-Anfrage zu senden

$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
});

Ein vollständiges Beispiel für einen Dienst sieht wie folgt aus

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;
   }

});

4voto

Jeffrey Roosendaal Punkte 6360

Sie können die Parameter auch einfach an das Ende der URL anhängen:

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

Gepaart mit script.php:

<? var_dump($_GET); ?>

Das Ergebnis ist die folgende Javascript-Warnung:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X