$ http get-Parameter funktionieren nicht


93

Weiß jemand warum das nicht funktioniert?

$http
    .get('accept.php', {
        source: link,
        category_id: category
    })
    .success(function (data, status) {
        $scope.info_show = data
    });

und das funktioniert:

$http
    .get('accept.php?source=' + link + '&category_id=' + category)
    .success(function (data, status) {
        $scope.info_show = data
    });

Antworten:


191

Der zweite Parameter im getAufruf ist ein Konfigurationsobjekt. Sie wollen so etwas:

$http
    .get('accept.php', {
        params: {
            source: link,
            category_id: category
        }
     })
     .success(function (data,status) {
          $scope.info_show = data
     });

Siehe die Argumente Abschnitt http://docs.angularjs.org/api/ng.$http für weitere Einzelheiten


Beachten Sie, dass die Verwendung paramswie oben auch das Problem behebt, dass GET-Anforderungen nicht verwendet werden data. AngularJS wird dies nicht wie jQuery selbst regeln. (Ich denke nicht, dass das eine gute oder schlechte Sache ist, nur anders und kann Leute stolpern).
DanielM

Ich werde für meine Schlüsselwerteigenschaften innerhalb des params-Objekts undefiniert. Sollte dies bei einem Service anders sein?
Winnemucca

2
Wenn das paramsObjekt leer ist oder alle seine Eigenschaften nulloder sind undefined, wird der Abfragezeichenfolge nichts hinzugefügt.
Nfang

3

In den $http.getDokumenten ist der zweite Parameter ein Konfigurationsobjekt:

get(url, [config]);

Verknüpfungsmethode zum Ausführen einer GETAnforderung.

Sie können Ihren Code ändern in:

$http.get('accept.php', {
    params: {
        source: link, 
        category_id: category
    }
});

Oder:

$http({
    url: 'accept.php', 
    method: 'GET',
    params: { 
        source: link, 
        category_id: category
    }
});

Als Randnotiz, da Angular 1.6 : .success nicht mehr verwendet werden sollte , verwenden Sie .thenstattdessen:

$http.get('/url', config).then(successCallback, errorCallback);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.