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
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: um sucesso
e um erro
de chamada de retorno que será chamado com um objecto de resposta.
Utilizando o método then()
, anexar uma função callback' ao
promise' devolvido.
Algo parecido com isto:
app.controller('MainCtrl', function ($scope, $http){
$http({
method: 'GET',
url: 'api/url-api'
}).then(function (response){
},function (error){
});
}
Ver referência aqui.
Estão também disponíveis métodos de "corte de corda".
$http.get('api/url-api').then(successCallback, errorCallback);
function successCallback(response){
//success code
}
function errorCallback(error){
//error code
}
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 um promise
(resolvido com um valor devolvido de um callback
) enquanto que .success()
é uma forma mais tradicional de registar callbacks
e não'não devolve um promise
.
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 angular 1.5.8
. Em vez disso, utilize response
e depois dentro do bloco response.data
consegui os meus dados json que estava à procura.
$http({
method: 'get',
url: 'data/data.json'
}).then(function (response) {
console.log(response, 'res');
data = response.data;
},function (error){
console.log(error, 'can not get data.');
});
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.
$scope.login = function () {
$scope.btntext = "Please wait...!";
$http({
method: "POST",
url: '/Home/userlogin', // link UserLogin with HomeController
data: $scope.user
}).then(function (response) {
console.log("Result value is : " + parseInt(response));
data = response.data;
$scope.btntext = 'Login';
if (data == 1) {
window.location.href = '/Home/dashboard';
}
else {
alert(data);
}
}, function (error) {
alert("Failed Login");
});
O trecho acima funciona para uma página de login.