Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I'm very new to both web development and AngularJS. I am trying to write a web page that will automatically update its info based on JSon files sitting on my server. I can get the json data but I can't seem to parse the data coming in. I validated the json data just to make sure I was writing it correctly, but whenever I display it on the site is just displays as a single string. I am not able to access the individual members. My factory and controller are below. Any help would be greatly appreciated!!

var MyController = function($scope, $log, MyFactory) {
    $scope.notes =[];

function init() {
    MyFactory.getNotes()
        .success(function(notes){
            $scope.notes = JSON.parse(notes);
        })
        .error(function(data, status, headers, config) {
                $log.log(data.error + ' ' + status);
            });
}

    init();

angular.module('MyApp')
    .controller('MyController', MyController);
};

And the factory:

    var MyFactory = function($http) {
    var factory = {};
    factory.getNotes = function() {
        return $http.get('/ci/data.json');
    };
return factory;
};

angular.module('MyApp').factory('MyFactory', 
                                    MyFactory);

I admit the code and question is crude but I've just started. Any additional help on architecture and style would be appreciated as well! Thanks in advance!

share|improve this question
    
Can you give an example of the json response? –  rom99 Apr 20 at 7:54
    
For example, [{"name":"matt","age":32},{"name":"dave","age":29}]. It would print it out just like that. If I sent that to the $scope then tried accessing say, name, it would work. It will only print out the entire string. –  Edited Content Apr 20 at 7:58
    
Do you have quotes around the whole thing in the data.json file? That would make the whole thing just one json string I guess. –  rom99 Apr 20 at 8:07
    
Also I think Angular should be parsing the json itself if it detects the response is json data, so you wouldn't need to do the manual JSON.parse. A quick way to see what's going in would be to try console.log(notes) in your success function and see what actually gets passed (a string or an object) –  rom99 Apr 20 at 8:12
    
Nope. I just have it around the methods and variables –  Edited Content Apr 20 at 8:13

1 Answer 1

  1. You don't need to parse the response as json. If the sourcefile is giving you valid json, angular knows its json.

  2. In your controller, try to console.log($scope.notes). If using google chrome, you get the json results pretty printed in the console you know your factory is working.

  3. Use an angular forEach to iterate through the result to do something with it.

    angular.forEach($scope.notes, function(note) {
        console.log(note);
    });
    
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.