Ошибка с $ http.get в angularJS – Успех не является функцией

Получение этой ошибки:

angule.min.js: 122 TypeError: $ http.get (…). Успех не является функцией в getUserInfo (app.js: 7) в new (app.js: 12) в Object.invoke (angular.min .js: 43) при Q.instance (угловой.min.js: 93) при p (угловой.min.js: 68) при g (угловой.min.js: 60) при g (угловой.min.js: 61 ) в точке g (угловой.min.js: 61) при угловом.min.js: 60 при угловом.min.js: 21

Вот мой код:

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

и вот html

    Github Users Directory     

GitHub Users

Who do you want to search for?
{{ user }}

.success и .error устарели и удалены из AngularJS 1.6 . Вместо этого используйте стандартный метод .then .

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

Уведомление об изъятии

Методы обещания $http legacy .success и .error устарели и будут удалены в версии 1.6. Вместо этого используйте стандартный метод .then .

– AngularJS (v1.5) $ http Service API Reference – Уведомление об изъятии .

Также см. SO: Почему угловые $ http-методы успеха / ошибки устарели? ,

Я думаю, вам нужно использовать .then, а не .success при использовании углового .

Пример из документа

 var promise = asyncGreet('Robin Hood'); promise.then(function(greeting) { alert('Success: ' + greeting); }, function(reason) { alert('Failed: ' + reason); }, function(update) { alert('Got notification: ' + update); }); 

Вот пример того, как $ 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. }); 

И, наконец, ваш код может выглядеть так

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

Согласно вашей текущей реализации, вы не передаете аргументы (т.е. $scope и $http ) в getUserInfo из ng-click="getUserInfo()" таким образом, вы получаете ошибку.

Вам не нужно передавать их как аргументы как $scope и $http как он уже введен в controller и определяет функцию в $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(); }]); 

это работает

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

Не нужно передавать $ http в качестве параметра функции, так как вы уже ввели $ http в качестве зависимости от вашего controllerа. Я внесла некоторые изменения в код. Пожалуйста, проверьте, что все будет хорошо.

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

Вам не нужно вводить $ 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; }); } }); 
 function successCallback(response) { return response } $http.get('url') .then(successCallback) 

Согласно документации Angular JS $http , эта система была исключена из 1.4.3 + Итак, я получил помощь от его поста, и вы можете попробовать таким образом

 app.controller('MainCtrl', function ($scope, $http){ $http({ method: 'GET', url: 'api/url-api' }).then(function (success){ },function (error){ }); } 

ИЛИ

 $http.get('api/url-api').then(successCallback, errorCallback); function successCallback(response){ //success code } function errorCallback(error){ //error code } 

Я предпочитаю второй, который был более гибким для меня.

 $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); }); 
  • Маршрутизация и токен аутентификации AngularJS с webapi
  • AngularJS - сброс значения $ scope.value не изменяет значение в шаблоне (случайное поведение)
  • Как получить данные POST с urlencoded с помощью $ http без jQuery?
  • Тестирование AngularJS с seleniumом
  • Как обрабатывать XML-услуги в AngularJS?
  • Как включить просмотр / частичный стиль в AngularJS
  • AngularJS проверяет, действительна ли форма в controllerе
  • AngularJS - конвертировать даты в controller
  • Использование ui-router с Bootstrap-ui modal
  • Как отменить запрос $ http в AngularJS?
  • Почему использование $ rootScope с функциями не рекомендуется?
  • Давайте будем гением компьютера.