Parametry pobierania $ http nie działają


93

Czy ktoś wie, dlaczego to nie działa?

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

i to działa:

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

Odpowiedzi:


191

Drugi parametr getwywołania to obiekt konfiguracyjny. Chcesz czegoś takiego:

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

Zobacz sekcję Argumenty na stronie http://docs.angularjs.org/api/ng.$http, aby uzyskać więcej szczegółów


Uwaga, użycie paramsjak powyżej rozwiązuje również problem nieużywanych żądań GET data. AngularJS nie rozwiąże tego samodzielnie tak, jak robi to jQuery. (Nie sądzę, żeby to było dobre lub złe, po prostu inne i może podburzyć ludzi).
DanielM

Otrzymuję undefined dla moich właściwości wartości klucza wewnątrz obiektu params. Czy powinno to być inne w przypadku usługi?
Winnemucca

2
Ponadto, gdy paramsobiekt jest pusty lub wszystkie jego właściwości są równe nulllub undefined, nic nie zostanie dodane do ciągu zapytania.
nfang

3

W $http.getdokumentacji drugi parametr to obiekt konfiguracyjny:

get(url, [config]);

Metoda skrótów do wykonania GETżądania.

Możesz zmienić swój kod na:

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

Lub:

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

Na marginesie, ponieważ Angular 1.6 : .success nie powinien być już używany , użyj .thenzamiast tego:

$http.get('/url', config).then(successCallback, errorCallback);
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.