$http.get(...).success is not a function
The .success
syntax was correct up to Angular v1.4.3.
For versions up to Angular v.1.6, you have to use then
method. The then()
method takes two arguments: a success
and an error
callback which will be called with a response object.
Using the then()
method, attach a callback
function to the returned promise
.
Something like this:
app.controller('MainCtrl', function ($scope, $http){ $http({ method: 'GET', url: 'api/url-api' }).then(function (response){ },function (error){ });}
See reference here.
Shortcut
methods are also available.
$http.get('api/url-api').then(successCallback, errorCallback);function successCallback(response){ //success code}function errorCallback(error){ //error code}
The data you get from the response is expected to be in JSON
format.JSON is a great way of transporting data, and it is easy to use within AngularJS
The major difference between the 2 is that .then()
call returns a promise
(resolved with a value returned from a callback
) while .success()
is more traditional way of registering callbacks
and doesn't return a promise
.
This might be redundant but the above most voted answer says .then(function (success)
and that didn't work for me as of Angular version 1.5.8
. Instead use response
then inside the block response.data
got me my json data I was looking for.
$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.');});
If you are trying to use AngularJs 1.6.6 as of 21/10/2017 the following parameter works as .success and has been depleted. The .then() method takes two arguments: a response and an error callback which will be called with a response object.
$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"); });
The above snipit works for a login page.