SyntaxError:Object.parse(本机)AngularJS中的意外标记o

Posted

技术标签:

【中文标题】SyntaxError:Object.parse(本机)AngularJS中的意外标记o【英文标题】:SyntaxError: Unexpected token o at Object.parse (native) AngularJS 【发布时间】:2015-06-28 02:29:09 【问题描述】:

来自 AngularJS 菜鸟的问题。

我正在尝试使用 asmx 网络服务来显示网格。我测试了 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: Unexpected token o 在 Object.parse (本机) 它指向下一行

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

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

这里有什么我遗漏的地方

【问题讨论】:

我怀疑你是否需要使用JSON.parse。默认情况下,Angular 期望响应为 JSON,并为您反序列化。 另外,alert 是一个糟糕的调试工具。改用console.log(或Angular的$log服务) 【参考方案1】:

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

$scope.products= data;

【讨论】:

【参考方案2】:

为什么你两次使用JSON.parse

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

你已经解析了数据对象,那为什么还要再解析一次呢?

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

就用这个

$scope.products = data;

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

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

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

【讨论】:

【参考方案5】:

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

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

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

【讨论】:

以上是关于SyntaxError:Object.parse(本机)AngularJS中的意外标记o的主要内容,如果未能解决你的问题,请参考以下文章

显示图像时 Object.parse 位置 0 处 JSON 中的意外标记

ORA-30625 - JSON_OBJECT_T

SyntaxError:意外的令牌'(' [关闭]

如何解决 GraphQL 中的 syntaxError?

前端控制台 JavaScript函数报错 SyntaxError: expected expression, got ';' SyntaxError: expected expre

SyntaxError - 期望缩进块[重复]