SyntaxError:Object.parse(native)AngularJS上的意外标记o

时间:2015-04-21 05:20:00

标签: javascript json angularjs angularjs-http

来自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],...

我在这里缺少什么

4 个答案:

答案 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为我解决了问题。