繁体   English   中英

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

[英]SyntaxError: Unexpected token o at Object.parse (native) AngularJS

来自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数据。

当我运行这个Web应用程序时,我收到错误

SyntaxError:Object.parse(native)上的意外标记o,它指向以下行

  $scope.questions = JSON.parse(myjson);

我尝试使用alert检查myjson的值,它显示[object Object],[object Object],...

这里有什么我想念的吗?

我认为返回的数据已经是JSON,不需要JSON.parse() ,除非它是字符串格式。

$scope.products= data;

为什么你两次使用JSON.parse

 var myjson = JSON.parse(data);
  $scope.products = JSON.parse(myjson);

您已经解析了数据对象,那么为什么要解析另一次?

另外我认为你的数据是返回Json结果,所以你不需要解析对象

只是用这个

$scope.products = data;

您的变量myjson已经是一个有效的JavaScript对象。 您不必在其上使用JSON.parse。

简单的解决方案,只需使用绝对网址:

var url = 'http://demo/app/pricefilessetup/grid.asmx/getGridJson';

而不是使用var url = 'app/pricefilessetup/grid.asmx/getGridJson'; 我检查过。

在我的例子中,字符串文字作为参数传递给JSON.parse()

例如, JSON.parse('asdf')将抛出错误Uncaught SyntaxError: Unexpected token a

在特定情况下,在单页角度应用程序中,访问令牌被传递给JSON.parse()并清除浏览器中的cookie为我解决了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM