Problems parsing a JSON response using AngularJS

46,513

Solution 1

$http.get will parse the json for you. You do not need to parse it yourself.

   $scope.cars = data.allCars;

Solution 2

Just parse your data like that

function (response,httpStatus) {    
                 alert('response' + angular.toJson(response));                  
         }

It is built-in feature of angularjs.

Share:
46,513
G A
Author by

G A

Updated on November 18, 2020

Comments

  • G A
    G A over 3 years

    I am new using AngularJS and I am having an issue parsing a json response. This is the HTML code I am using:

    <!DOCTYPE html>
    <html ng-app>
    <head>
        <script src="@routes.Assets.at("javascripts/angular.min.js")" type="text/javascript"</script>
        <script src="@routes.Assets.at("javascripts/carLibrary.js")" type="text/javascript"></script>
    </head>
    <body>
    
    <div ng-controller="CarCtrl">
        <ul>
            <li ng-repeat="car in cars">
                {{car.name}}
                <p>{{car.speed}}</p>
            </li>
        </ul>
        <hr>
        <p>{{response}}</p>
    </div>
    </body>
    </html>
    

    And this is the Javascript code using AngularJS:

    function CarCtrl($scope, $http) {
    
        $scope.getAllCars = function () {
            $scope.url = 'getAllCars';
    
            $http.get($scope.url).success(function (data, status) {
                $scope.response = data;
                var carsFromServer = JSON.parse(data);
                $scope.cars = carsFromServer.allCars;
            }).error(function (data, status) {
                    $scope.response = 'Request failed';
                });
        }
    
        $scope.getAllCars();
    }
    

    The HTML is showing the variable $scope.response with the JSON returned by the server, but it is not showing anything in the list at the top. The JSON is perfectly formatted, however $scope.cars variable seems to be always empty.

    What am I doing wrong?

    Many thanks,

    GA