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
I think data returned is already in JSON, no need of JSON.parse()
, unless it in string format.
$scope.products= data;
Why you using JSON.parse
in two times?
var myjson = JSON.parse(data);
$scope.products = JSON.parse(myjson);
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
$scope.products = data;
Your variable myjson
is already a valid JavaScript Object. You do not have to use JSON.parse on it.
Simple solution, just use an absolute url:
var url = 'http://demo/app/pricefilessetup/grid.asmx/getGridJson';
Instead of using var url = 'app/pricefilessetup/grid.asmx/getGridJson';
I have checked.
In my case it was string literal being passed in as parameter to JSON.parse()
.
For Example JSON.parse('asdf')
would throw an error Uncaught 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.
来源:https://stackoverflow.com/questions/29763557/syntaxerror-unexpected-token-o-at-object-parse-native-angularjs