$ 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.