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の値を確認しようとすると、[オブジェクトオブジェクト]、[オブジェクトオブジェクト]、...
ここに足りないものはありますか
返されるデータはすでに文字列形式でない限り、JSON.parse()
を必要としないJSONであると思います。
$scope.products= data;
JSON.parse
を2回使用する理由
var myjson = JSON.parse(data);
$scope.products = JSON.parse(myjson);
あなたはすでにデータオブジェクトを解析していますので、なぜもう1回解析するのですか?
また、あなたのデータはJsonの結果を返すと思うので、オブジェクトを解析する必要はありません
これを使うだけ
$scope.products = data;
変数myjson
はすでに有効なJavaScriptオブジェクトです。 JSON.parseを使用する必要はありません。
単純なソリューション、絶対URLを使用するだけです:
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
_をスローします。
特定のケースでは、単一ページangularアプリケーションでは、アクセストークンはJSON.parse()
に渡され、ブラウザのCookieをクリアすることで問題は解決しました。