web-dev-qa-db-ja.com

SyntaxError:Object.parse(native)AngularJSの予期しないトークンo

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を貼り付けられませんが、基本的にJSONデータをループするng-controllerディレクティブとng-repeatがあります。

このWebアプリを実行すると、エラーが発生します

SyntaxError:Object.parse(native)の予期しないトークンo次の行を指します

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

アラートを使用してmyjsonの値を確認しようとすると、[オブジェクトオブジェクト]、[オブジェクトオブジェクト]、...

ここに足りないものはありますか

31
blue piranha

返されるデータはすでに文字列形式でない限り、JSON.parse()を必要としないJSONであると思います。

$scope.products= data;
29
Pankaj Parkar

JSON.parseを2回使用する理由

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

あなたはすでにデータオブジェクトを解析していますので、なぜもう1回解析するのですか?

また、あなたのデータはJsonの結果を返すと思うので、オブジェクトを解析する必要はありません

これを使うだけ

$scope.products = data;
8

変数myjsonはすでに有効なJavaScriptオブジェクトです。 JSON.parseを使用する必要はありません。

7
fatCop

単純なソリューション、絶対URLを使用するだけです:

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

var url = 'app/pricefilessetup/grid.asmx/getGridJson';を使用する代わりにチェックしました。

0
Mohammad nasim

私の場合、JSON.parse()へのパラメーターとして渡される文字列リテラルでした。

たとえば、JSON.parse('asdf')はエラー_Uncaught SyntaxError: Unexpected token a_をスローします。

特定のケースでは、単一ページangularアプリケーションでは、アクセストークンはJSON.parse()に渡され、ブラウザのCookieをクリアすることで問題は解決しました。

0
vinesh