AngularJS $http.get不起作用。

4

我想在AngularJS中调用一个REST Web服务,目前正在进行一些试验。下面的代码不起作用,并抛出以下异常。你能帮我识别问题吗?

提前致谢。

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

错误信息为:TypeError: 无法读取未定义的属性“get” 在 getUsersFromLocal 中。
该服务可访问,我已通过一些REST客户端进行了测试。

getUsersFromLocal() 是一个控制器吗? - Martin Shishkov
你需要提供更多的上下文信息。getUsersFromLocal() 函数定义在哪里?最终的问题是 Angular 的 $injector 服务不知道如何对调用 getUsersFromLocal()(无论它在你的代码中的哪个位置)进行依赖注入。请按照 @zegoline 或 @pankajparkar 的回答来解决你的问题。 - Brian Clapper
3个回答

2
试试这样做,这是我在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;
                });
    });

1
如果我理解正确,getUsersFromLocal函数在控制器内部,基本上函数参数正在破坏$scope$http对象的存在。您需要从参数中删除它们,并且还要删除位于$http之外的返回语句,这无论如何都不起作用。 代码
app.controller('mainCtrl', function() {
    $scope.getUsersFromLocal = function() {
        $http.get('http://localhost:8080/people').
        success(function(data) {
            $scope.data = data;
        });
    };

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

抱歉,我不知道我只能选择一个正确答案。我也标记了其他评论为可以接受的。 - emredmrl
@emredmrl 没问题,兄弟..很高兴能帮助你..谢谢 :) 如果你需要任何帮助,请告诉我 :) - Pankaj Parkar

1
如果getUsersFromLocal不是控制器或服务,并且您手动调用此函数,则应像这样传递$http$scope对象。
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
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接