Angularjs $http.get does not work

2019-05-06 15:29发布

问题:

My purpose is to consume a REST web service in AngularJS and I am making some trials right now. Below code is not working and throwing following exception. Can you help me identifty the problem?

Thanks in advance.

function getUsersFromLocal($scope,$http)
{
 $http.get('http://localhost:8080/people').
 success(function(data) {
 $scope.data = data;
 });
return data;
}

Error is: TypeError: Cannot read property 'get' of undefined at getUsersFromLocal.

The service is accessible and I tested it through some REST clients.

回答1:

If I understood correctly getUsersFromLocal function is inside controller, basically the function parameters are killing the $scope, $http object existence, You need to remove them from parameter & Also removed the return statement which was outside $http which won't work in anyways.

Code

app.controller('mainCtrl', function() {
    $scope.getUsersFromLocal = function() {
        $http.get('http://localhost:8080/people').
        success(function(data) {
            $scope.data = data;
        });
    };

    $scope.getUsersFromLocal(); //call ajax method
});


回答2:

Try like this , this way i found on w3school.

var app = angular.module('myApp4', []);
    app.controller('customersCtrl', function($scope, $http) {
        $http.get("http://www.w3schools.com/angular/customers.php")
                .success(function(response) {
                    $scope.data= response.records;
                });
    });


回答3:

if getUsersFromLocal is not a controller or service, and you are invoking this function manually, you should pass $http and $scope objects to it, like this

module.controller('TestController', function($scope, $http) {

  function getUsersFromLocal($scope,$http) {
    $http.get('http://localhost:8080/people').
      success(function(data) {
        $scope.data = data;
      });
  }

  getUsersFromLocal($scope, $http); // pass this services manually
});