4

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.

2
  • Is getUsersFromLocal() a controller? Commented Apr 26, 2015 at 9:10
  • You need to supply more context. Where is getUsersFromLocal() defined? The ultimate problem is that Angular's $injector service doesn't know to do dependency injection on the call to getUsersFromLocal() (wherever that is in your code). Follow either @zegoline's answer or @pankajparkar's answer to address your problem. Commented Apr 26, 2015 at 16:17

3 Answers 3

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;
                });
    });
Sign up to request clarification or add additional context in comments.

Comments

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

1 Comment

Sorry, I didn't know I could choose only one correct answer. I also marked other comments as okay.
1

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.