web-dev-qa-db-fra.com

SyntaxError: Jeton inattendu o sur Object.parse (native) AngularJS

Question de AngularJS noob.

J'essaie d'utiliser un service Web asmx pour afficher la grille. J'ai testé le service Web et il a correctement généré les données JSON. Voici mon contrôleur

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);
    });
}]);

Pour une raison quelconque, SO ne m’autorise pas à coller le code HTML, mais il contient essentiellement une directive ng-controller et ng-repeat pour parcourir en boucle les données JSON.

Lorsque je lance cette application Web, j'obtiens l'erreur

SyntaxError: Jeton inattendu o sur Object.parse (native) et pointe vers la ligne suivante

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

J'ai essayé de vérifier la valeur de myjson en utilisant alert et il affiche [objet Object], [objet Object], ...

Y a-t-il quelque chose qui me manque ici

31
blue piranha

Je pense que les données renvoyées sont déjà en JSON, pas besoin de JSON.parse(), à moins que ce ne soit au format chaîne.

$scope.products= data;
29
Pankaj Parkar

Pourquoi utilisez-vous JSON.parse en deux fois?

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

Vous avez déjà analysé l'objet de données. Pourquoi alors analyser une autre fois?

aussi, je pense que vos données retournent le résultat Json, vous n'avez donc pas besoin d'analyser l'objet

juste utiliser ceci

$scope.products = data;
8
Ramesh Rajendran

Votre variable myjson est déjà un objet JavaScript valide. Vous n'êtes pas obligé d'utiliser JSON.parse dessus.

7
fatCop

Solution simple, utilisez simplement une URL absolue:

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

À la place d'utiliser var url = 'app/pricefilessetup/grid.asmx/getGridJson'; J'ai vérifié.

0
Mohammad nasim

Dans mon cas, le littéral de chaîne était passé en paramètre à JSON.parse().

Par exemple, JSON.parse('asdf') génère une erreur Uncaught SyntaxError: Unexpected token a.

Avec des cas spécifiques, dans Single page angular application, le jeton d'accès était en train d'être transmis à la JSON.parse()) et le nettoyage des cookies dans le navigateur a résolu le problème pour moi.

0
vinesh