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

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

dnc253
quelle
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);
Mistalis
quelle