Error con $ http.get en angularJS-El éxito no es una función
ng-href angular 5 (9)
Esta pregunta ya tiene una respuesta aquí:
Obteniendo este error:
angular.min.js: 122 TypeError: $ http.get (...). el éxito no es una función en getUserInfo (app.js: 7) en new (app.js: 12) en Object.invoke (angular.min .js: 43) en Q.instance (angular.min.js: 93) en p (angular.min.js: 68) en g (angular.min.js: 60) en g (angular.min.js: 61 ) en g (angular.min.js: 61) en angular.min.js: 60 en angular.min.js: 21
Aquí está mi código:
var gitHub = angular.module(''gitHub'', []);
gitHub.controller(''mainController'', [''$scope'', ''$http'', function($scope, $http) {
var $scope.user = '''';
function getUserInfo($scope, $http){
$http.get(''https://api.github.com/users'')
.success(function (result) {
$scope.user = result;
console.log(result);
});
};
getUserInfo($scope, $http);
}]);
y aqui esta el html
<!DOCTYPE html>
<html ng-app="gitHub">
<head>
<title>Github Users Directory</title>
<script src="angular.min.js"></script>
<script src="app.js"></script>
</head>
<body>
<div ng-controller="mainController">
<div>
<h1>GitHub Users</h1>
Who do you want to search for?<input type="text" name="FindHim" ng-model="queryName" />
<button ng-click="getUserInfo()">Search</button>
</div>
<div>
{{ user }}
</div>
</div>
</body>
</html>
Creo que necesita usar .then y no .success cuando usa angular .
Ejemplo de los documentos
var promise = asyncGreet(''Robin Hood'');
promise.then(function(greeting) {
alert(''Success: '' + greeting);
}, function(reason) {
alert(''Failed: '' + reason);
}, function(update) {
alert(''Got notification: '' + update);
});
Aquí está el ejemplo de cómo $ Http lo usa:
// 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.
});
Y finalmente tu código podría verse así
$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);
});
};
De acuerdo con la documentación de Angular JS
$http
, este sistema ha sido excluido de
1.4.3 +
Por lo tanto, he recibido ayuda de su
post
y puede intentarlo de esta manera
app.controller(''MainCtrl'', function ($scope, $http){
$http({
method: ''GET'',
url: ''api/url-api''
}).then(function (success){
},function (error){
});
}
O
$http.get(''api/url-api'').then(successCallback, errorCallback);
function successCallback(response){
//success code
}
function errorCallback(error){
//error code
}
Prefiero el segundo que fue más flexible para mí.
Los métodos
.success
y
.error
están en desuso y se han
eliminado de AngularJS 1.6
.
Utilice el método estándar
.then
lugar.
$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);
});
Aviso de desuso
Los métodos de promesa heredada
$http
.success
y.error
han quedado en desuso y se eliminarán en v1.6.0. Utilice el método estándar.then
lugar.- AngularJS (v1.5) $ http Service API Reference - Aviso de desuso .
Ver también SO: ¿Por qué los métodos de éxito / error angular $ http están en desuso? .
No es necesario pasar $ http como parámetro de función, ya que ya ha inyectado $ http como una dependencia a su controlador. He hecho alguna modificación al código. Por favor, compruebe que funcionará bien para usted.
var gitHub = angular.module(''gitHub'', []);
gitHub.controller(''mainController'', [''$scope'', ''$http'', function ($scope, $http) {
$scope.user = '''';
$scope.getUserInfo = function() {
$http.get(''https://api.github.com/users'')
.success(function (result) {
$scope.user = result;
console.log(result);
});
};
$scope.getUserInfo();
}]);
No necesita inyectar $ 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;
});
}
});
Según su implementación actual, no está pasando argumentos (es decir,
$scope
y
$http
) a
getUserInfo
desde
ng-click="getUserInfo()"
lo que está obteniendo el error.
No necesita pasarlos como argumentos como
$scope
y
$http
como ya está inyectado en el controlador y definir la función en
$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();
}]);
esto funciona
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.
});
function successCallback(response) {
return response
}
$http.get(''url'')
.then(successCallback)
$http({
method: ''GET'',
url: ''....'',
headers: {
''Authorization'': ''Bearer '' + localStorage["token"]
}
})
.then(function (data, status, headers, config) {
alert(JSON.stringify(data) + "Status" + status);
})
.error(function (data, status, headers, config) {
alert(JSON.stringify(data) + "Status" + status);
});