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 中的意外标记
前端控制台 JavaScript函数报错 SyntaxError: expected expression, got ';' SyntaxError: expected expre