Bu kod bende var:
app.controller('MainCtrl', function ($scope, $http){
$http.get('api/url-api')
.success(function (data, status, headers, config){
}
}
Yerel ortamımda sorunsuz çalışıyor, ancak bir sunucuda bu hatayı döndürüyor:
TypeError: $http.get(...).success bir fonksiyon değil
Bir fikrin var mı? Teşekkürler
.success` sözdizimi Angular v1.4.3'e kadar doğruydu.
Angular v.1.6'ya kadar olan sürümler için then
yöntemini kullanmanız gerekir. then()yöntemi iki argüman alır: bir
successve bir yanıt nesnesiyle çağrılacak bir
error` geri çağrısı.
then()yöntemini kullanarak, döndürülen
promiseöğesine bir
callback` işlevi ekleyin.
Bunun gibi bir şey:
app.controller('MainCtrl', function ($scope, $http){
$http({
method: 'GET',
url: 'api/url-api'
}).then(function (response){
},function (error){
});
}
Referansa bakınız burada
Kısayol` yöntemleri de mevcuttur.
$http.get('api/url-api').then(successCallback, errorCallback);
function successCallback(response){
//success code
}
function errorCallback(error){
//error code
}
Yanıttan aldığınız verilerin JSON
biçiminde olması beklenir.
JSON, verileri taşımanın harika bir yoludur ve AngularJS içinde kullanımı kolaydır
İkisi arasındaki en büyük fark, .then()
çağrısının bir promise
(bir callback
ten döndürülen bir değerle çözümlenmiş) döndürmesi, .success()
çağrısının ise callback
kaydetmenin daha geleneksel bir yolu olması ve bir promise
döndürmemesidir.
Bu gereksiz olabilir, ancak yukarıdaki en çok oy alan cevap .then(function (success)
diyor ve bu benim için Angular 1.5.8
sürümünden itibaren çalışmadı. Bunun yerine response
kullanın ve ardından response.data
bloğunun içinde aradığım json verilerini aldım.
$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.');
});
21/10/2017 tarihinden itibaren AngularJs 1.6.6 kullanmaya çalışıyorsanız, aşağıdaki parametre .success olarak çalışır ve tükenmiştir. .then() yöntemi iki argüman alır: bir yanıt nesnesi ile çağrılacak bir yanıt ve bir hata geri çağrısı.
$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");
});
Yukarıdaki alıntı bir giriş sayfası için çalışır.