Error with $http.get in angularJS -- Success not a Function [duplicate]
Solution 1:
The .success
and .error
methods are deprecated and have been removed from AngularJS 1.6. Use the standard .then
method instead.
$http.get('https://api.github.com/users')
.then(function (response) {
var data = response.data;
var status = response.status;
var statusText = response.statusText;
var headers = response.headers;
var config = response.config;
$scope.user = data;
console.log(data);
});
Deprecation Notice
The
$http
legacy promise methods.success
and.error
have been deprecated and will be removed in v1.6.0. Use the standard.then
method instead.— AngularJS (v1.5) $http Service API Reference -- Deprecation Notice.
Also see SO: Why are angular $http success/error methods deprecated?.
Solution 2:
i think you need to use .then and not .success when using angular.
Example from the doc's
var promise = asyncGreet('Robin Hood');
promise.then(function(greeting) {
alert('Success: ' + greeting);
}, function(reason) {
alert('Failed: ' + reason);
}, function(update) {
alert('Got notification: ' + update);
});
Here is the example of how $Http uses it:
// Simple GET request example:
$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
And finally your code could look like this
$scope.getUserInfo = function () {
$http.get('https://api.github.com/users')
.then(function (result) {
$scope.user = result;
console.log(result);
}, function(result) {
//some error
console.log(result);
});
};
Solution 3:
this works
https://docs.angularjs.org/api/ng/service/$http
// Simple GET request example:
$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
Solution 4:
As per your current implementation, You are not passing arguments (i.e. $scope
and $http
) to getUserInfo
from ng-click="getUserInfo()"
thus you are getting the error.
You don't need to pass these as arguments as $scope
and $http
as its already injected in controller and define the function in $scope
.
gitHub.controller('mainController', ['$scope', '$http', function($scope, $http) {
$scope.user = '';
//Redefined function, without arguments
$scope.getUserInfo = function (){
$http.get('https://api.github.com/users')
.success(function (result) {
$scope.user = result;
console.log(result);
});
};
$scope.getUserInfo();
}]);
Solution 5:
You dont need to inject $scope, $http..
app.controller('MainController', function($scope, $http) {
$scope.fetchData = function(_city){
$http.get("../api/AllPlaces?filter[where][placeCity]="+ _city)
.then(function(response) {
$scope.Data = response.data;
});
}
});