j'ai ce code:
app.controller('MainCtrl', function ($scope, $http){
$http.get('api/url-api')
.success(function (data, status, headers, config){
}
}
Dans mon environnement local, ça va, mais sur un serveur, retournez cette erreur:
TypeError: $ http.get (...). Success n'est pas une fonction
Des idées? Merci
La syntaxe .success
était correcte jusqu'à Angular v1.4.3.
Pour les versions jusqu'à Angular v.1.6, vous devez utiliser la méthode then
. La méthode then()
prend deux arguments: un callback success
et un error
qui sera appelé avec un objet de réponse.
En utilisant la méthode then()
, associez une fonction callback
à la fonction promise
renvoyée.
Quelque chose comme ça:
app.controller('MainCtrl', function ($scope, $http){
$http({
method: 'GET',
url: 'api/url-api'
}).then(function (response){
},function (error){
});
}
Voir référence ici.
Les méthodes Shortcut
sont également disponibles.
$http.get('api/url-api').then(successCallback, errorCallback);
function successCallback(response){
//success code
}
function errorCallback(error){
//error code
}
Les données que vous obtenez de la réponse devraient être au format JSON
. JSON est un excellent moyen de transporter des données . facile à utiliser dans AngularJS
La principale différence entre le 2 est que l'appel de .then()
renvoie un promise
(résolu avec une valeur renvoyée par un callback
) alors que .success()
est un moyen plus traditionnel d'enregistrer callbacks
et ne renvoie pas un promise
.
Cela pourrait être redondant, mais la réponse la plus votée ci-dessus dit .then(function (success)
et cela ne fonctionnait pas pour moi à partir de Angular version 1.5.8
. À la place, utilisez response
puis à l'intérieur du bloc response.data
m'a obtenu les données JSON que je cherchais.
$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.');
});
Si vous essayez d'utiliser AngularJs 1.6.6 à partir du 21/10/2017, le paramètre suivant fonctionne comme .success et a été épuisé. La méthode .then () prend deux arguments: une réponse et un rappel d'erreur qui sera appelé avec un objet de réponse.
$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");
});
Le snipit ci-dessus fonctionne pour une page de connexion.