$http.get(...).sucesso não é uma função
tenho este código:
app.controller('MainCtrl', function ($scope, $http){
$http.get('api/url-api')
.success(function (data, status, headers, config){
}
}
No meu ambiente local, funciona bem, mas num servidor, devolva este erro:
TypeError: $http.get(...).sucesso não é uma função
Alguma ideia? Obrigado
95
3
A sintaxe `.sucesso' estava correcta até Angular v1.4.3.
Para versões até à Angular v.1.6, é necessário utilizar o método
then
. O método "then()then()
toma dois argumentos: umsucesso
e umerro
de chamada de retorno que será chamado com um objecto de resposta.Utilizando o método
then()
, anexar uma funçãocallback' ao
promise' devolvido.Algo parecido com isto:
Ver referência aqui.
Estão também disponíveis métodos de "corte de corda".
Espera-se que os dados obtidos a partir da resposta estejam no formato
JSON
. JSON é uma óptima forma de transporte de dados, e é fácil de utilizar dentro de AngularJS.A maior diferença entre os 2 é que
.then()
chamada devolve umpromise
(resolvido com um valor devolvido de umcallback
) enquanto que.success()
é uma forma mais tradicional de registarcallbacks
e não'não devolve umpromise
.Isto pode ser redundante, mas a resposta mais votada acima diz
.then(function (success)
e isso não't funciona para mim a partir da versão angular1.5.8
. Em vez disso, utilizeresponse
e depois dentro do blocoresponse.data
consegui os meus dados json que estava à procura.Se estiver a tentar utilizar AngularJs 1.6.6 a partir de 21/10/2017 o parâmetro seguinte funciona como .success e foi esgotado. O método .then() leva dois argumentos: uma resposta e uma chamada de retorno de erro que será chamada com um objecto de resposta.
O trecho acima funciona para uma página de login.