angularjs angularjs-http angularjs-1.6

Error con $ http.get en angularJS-El éxito no es una función



ng-href angular 5 (9)

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); });