来自AngularJS noob的问题。
我正在尝试使用asmx Web服务来显示网格。我测试了Web服务,它正确输出了JSON数据。 这是我的控制器
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);
});
}]);
出于某种原因,SO不允许我粘贴html,但它基本上有一个ng-controller指令和ng-repeat来循环遍历JSON数据。
当我运行此网络应用时,我收到错误
SyntaxError:意外的令牌o at Object.parse(native) 它指向以下行
$scope.questions = JSON.parse(myjson);
我尝试使用alert检查myjson的值,它显示[object Object],[object Object],...
我在这里缺少什么
答案 0 :(得分:29)
我认为返回的数据已经是JSON,不需要JSON.parse()
,除非它是字符串格式。
$scope.products= data;
答案 1 :(得分:8)
为什么两次使用JSON.parse
?
var myjson = JSON.parse(data);
$scope.products = JSON.parse(myjson);
您已经解析了数据对象,那么为什么要解析另一次?
我认为你的数据是返回Json结果,所以你不需要解析对象
只需使用此
$scope.products = data;
答案 2 :(得分:7)
您的变量myjson
已经是有效的JavaScript对象。您不必在其上使用JSON.parse。
答案 3 :(得分:0)
在我的例子中,字符串文字作为参数传递给JSON.parse()
。
例如JSON.parse('asdf')
会抛出错误Uncaught SyntaxError: Unexpected token a
。
对于特定情况,在单页角度应用程序中,访问令牌被传递到JSON.parse()
并清除浏览器中的cookie为我解决了问题。