Question from AngularJS noob.
I am trying to use an asmx web service to display grid. I tested the web service and it correctly outputs the JSON data. Here is my controller
app.controller('SetupController', ['$scope', '$http', function ($scope, $http) {
var url = 'app/pricefilessetup/grid.asmx/getGridJson';
$http.get(url).success(function (data) {
var myjson = JSON.parse(data);
$scope.products= JSON.parse(myjson);
});
}]);
For some reason, SO is not allowing me to paste the html but it basically has a ng-controller directive and ng-repeat to loop through the JSON data.
When I run this web app, I get the error
SyntaxError: Unexpected token o at Object.parse (native) and it points to following line
$scope.questions = JSON.parse(myjson);
I tried checking the value of myjson using alert and it displays [object Object], [object Object], ...
Is there anything I am missing here
Why you using
JSON.parse
in two times?You have already parse the data object,So then why you parsing another one time?
also i think your data is return Json result, so you don't need to parse the object
just use this
Simple solution, just use an absolute url:
Instead of using
var url = 'app/pricefilessetup/grid.asmx/getGridJson';
I have checked.I think data returned is already in JSON, no need of
JSON.parse()
, unless it in string format.Your variable
myjson
is already a valid JavaScript Object. You do not have to use JSON.parse on it.In my case it was string literal being passed in as parameter to
JSON.parse()
.For Example
JSON.parse('asdf')
would throw an errorUncaught SyntaxError: Unexpected token a
.With specific case, in Single page angular application, the access token was being passed to the
JSON.parse()
and clearing the cookies in browser solved the problem for me.