$ http get paramètres ne fonctionne pas

93

Est-ce que quelqu'un sait pourquoi cela ne fonctionne pas?

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

et cela fonctionne:

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

Réponses:

191

Le 2ème paramètre de l' getappel est un objet de configuration. Vous voulez quelque chose comme ça:

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

Voir la section Arguments de http://docs.angularjs.org/api/ng.$http pour plus de détails

dnc253
la source
Notez paramsque l' utilisation de la méthode ci-dessus résout également le problème des requêtes GET qui n'utilisent pas data. AngularJS ne réglera pas cela lui-même comme le fait jQuery. (Je ne pense pas que ce soit une bonne ou une mauvaise chose, juste différent et peut faire trébucher les gens).
DanielM
Je deviens indéfini pour mes propriétés de valeur clé à l'intérieur de l'objet params. Cela devrait-il être différent dans un service?
Winnemucca
2
De plus, lorsque l' paramsobjet est vide ou que toutes ses propriétés sont nullou undefined, rien ne sera ajouté à la chaîne de requête.
nfang
3

À partir de la $http.getdocumentation , le deuxième paramètre est un objet de configuration:

get(url, [config]);

Méthode de raccourci pour exécuter la GETdemande.

Vous pouvez changer votre code pour:

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

Ou:

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

En remarque, puisque Angular 1.6 : .success ne devrait plus être utilisé , utilisez à la .thenplace:

$http.get('/url', config).then(successCallback, errorCallback);
Mistalis
la source