$ http get parametri non funziona


93

Qualcuno sa perché questo non funziona?

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

e questo funziona:

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

Risposte:


191

Il secondo parametro nella getchiamata è un oggetto di configurazione. Vuoi qualcosa di simile:

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

Vedi la sezione Argomenti di http://docs.angularjs.org/api/ng.$http per maggiori dettagli


Nota, l'utilizzo paramscome sopra risolve anche il problema delle richieste GET che non vengono utilizzate data. AngularJS non risolverà questo problema da solo come fa jQuery. (Non penso che sia una cosa buona o cattiva, solo diversa e potrebbe inciampare le persone).
DanielM

Sto diventando indefinito per le mie proprietà del valore chiave all'interno dell'oggetto params. Dovrebbe essere diverso in un servizio?
Winnemucca

2
Inoltre, quando l' paramsoggetto è vuoto o tutte le sue proprietà sono nullo undefined, non verrà aggiunto nulla alla stringa di query.
nfang

3

Dai $http.getdocumenti , il secondo parametro è un oggetto di configurazione:

get(url, [config]);

Metodo di scelta rapida per eseguire la GETrichiesta.

Puoi cambiare il tuo codice in:

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

O:

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

Come nota a margine , poiché Angular 1.6 : .success non dovrebbe più essere usato , usa .theninvece:

$http.get('/url', config).then(successCallback, errorCallback);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.