$ http obtener parámetros no funciona


93

¿Alguien sabe por qué esto no funciona?

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

y esto funciona:

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

Respuestas:


191

El segundo parámetro de la getllamada es un objeto de configuración. Quieres algo como esto:

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

Consulte la sección Argumentos de http://docs.angularjs.org/api/ng.$http para obtener más detalles.


Tenga en cuenta que usar paramscomo se indicó anteriormente también resuelve el problema de las solicitudes GET que no se usan data. AngularJS no resolverá esto por sí mismo como lo hace jQuery. (No creo que eso sea algo bueno o malo, solo diferente y puede hacer tropezar a la gente).
DanielM

Obtengo indefinido para mis propiedades de valor clave dentro del objeto params. ¿Debería ser diferente en un servicio?
Winnemucca

2
Además, cuando el paramsobjeto está vacío, o todas sus propiedades son nullo undefined, no se agregará nada a la cadena de consulta.
nfang

3

De los $http.getdocumentos , el segundo parámetro es un objeto de configuración:

get(url, [config]);

Método de acceso directo para realizar la GETsolicitud.

Puede cambiar su código a:

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

O:

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

Como nota al margen, dado que Angular 1.6 : .success ya no debería usarse , use .thenen su lugar:

$http.get('/url', config).then(successCallback, errorCallback);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.