93 votes

$http get parameters ne fonctionne pas

Quelqu'un sait-il 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
    });

192voto

dnc253 Points 11784

Le 2e paramètre de la get 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 le Arguments section de http://docs.angularjs.org/api/ng.$http pour plus de détails

0 votes

Remarque, en utilisant params comme ci-dessus résout également le problème des requêtes GET qui n'utilisent pas la fonction data . AngularJS ne résout pas ce problème lui-même comme le fait jQuery. (Je ne pense pas que ce soit une bonne ou une mauvaise chose, c'est juste différent et cela peut faire trébucher les gens).

0 votes

J'obtiens des valeurs indéfinies pour les propriétés de ma clé à l'intérieur de l'objet params. Cela devrait-il être différent dans un service ?

2 votes

De même, lorsque le params est vide, ou toutes ses propriétés sont null o undefined rien ne sera ajouté à la chaîne d'interrogation.

3voto

Mistalis Points 12950

De $http.get docs le second paramètre est un objet de configuration :

get(url, [config]);

Méthode de raccourci pour effectuer GET demande.

Vous pouvez changer votre code pour :

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

O:

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

À titre d'information, puisque Angular 1.6 : .success ne doit plus être utilisé utiliser .then à la place :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X