tengo este código:
app.controller('MainCtrl', function ($scope, $http){
$http.get('api/url-api')
.success(function (data, status, headers, config){
}
}
En mi entorno local, funciona bien, pero en un servidor, devuelve este error:
TypeError: $ http.get (...). El éxito no es una función
¿Algunas ideas? Gracias
javascript
angularjs
ajax
function
Alejo Ribes
fuente
fuente
then()
nosuccess()
.success
sintaxis era correcta hasta Angular v1.4.3. Vea los documentos antiguos aquí: code.angularjs.org/1.4.3/docs/api/ng/service/$httpRespuestas:
los
.success
sintaxis era correcta hasta Angular v1.4.3.Para versiones hasta Angular v.1.6, debe usar el
then
método. Elthen()
método toma dos argumentos: aysuccess
unaerror
devolución de llamada que se llamará con un objeto de respuesta.Usando el
then()
método, adjunte unacallback
función al archivo devueltopromise
.Algo como esto:
Consulte la referencia aquí.
Shortcut
también hay métodos disponibles.Se espera que los datos que obtenga de la respuesta estén en
JSON
formato. JSON es una excelente forma de transportar datos y es fácil de usar dentro de AngularJSLa principal diferencia entre los 2 es que la
.then()
llamada devuelve unpromise
(resuelto con un valor devuelto por acallback
) mientras que.success()
es una forma más tradicional de registrarsecallbacks
y no devuelve unpromise
.fuente
.success
y.then
tome un parámetro diferente, tenga en cuenta esoEsto podría ser redundante, pero la respuesta más votada anterior dice
.then(function (success)
y eso no funcionó para mí a partir de la versión Angular1.5.8
. En su lugar, use,response
luego, dentro del bloque,response.data
me dieron los datos json que estaba buscando.fuente
success.data
? el nombre del parámetro no es tan importante en este caso.$http.get('data/data.json').success(function(data) { data = data;}
con mi respuesta, un desarrollador ahora sabedata.data
que no puede obtener datos por sí mismo. por lo tanto, mi respuesta es importante para este mensaje de error.success.data
oresponse.data
o cualquier otra cosa. Incluso podrías usardonaldTrump.data
eso también funcionará. Aunque debería usar nombres de variables razonables, no estoy seguro de que este tenga mucho sentido.data
que contiene los datos que vienen como respuesta de su servidor. necesita acceder a esa matriz de datos, utilizando<yourSuccessObjectName>.data
Si está intentando utilizar AngularJs 1.6.6 a partir del 21/10/2017, el siguiente parámetro funciona como .success y se ha agotado. El método .then () toma dos argumentos: una respuesta y una devolución de llamada de error que se llamará con un objeto de respuesta.
El snipit anterior funciona para una página de inicio de sesión.
fuente