【问题标题】:SyntaxError: Unexpected token o at Object.parse (native) AngularJSSyntaxError:Object.parse(本机)AngularJS中的意外标记o
【发布时间】: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服务)

标签: javascript json angularjs angularjs-http


【解决方案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 解决了我的问题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-09-11
            • 2013-05-31
            • 1970-01-01
            • 2023-04-08
            • 2021-08-28
            相关资源
            最近更新 更多