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
    });
kahonmlg
źródło

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

dnc253
źródło
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);
Mistalis
źródło