Подтвердить что ты не робот

SyntaxError: Неожиданный токен o в Object.parse(native) AngularJS

Вопрос от AngularJS noob.

Я пытаюсь использовать веб-службу asmx для отображения сетки. Я протестировал веб-службу и правильно вывел данные 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.

Когда я запускаю это веб-приложение, я получаю сообщение об ошибке

СинтаксисError: Неожиданный токен o   в Object.parse(native) и он указывает на следующую строку

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

Я попытался проверить значение myjson с помощью alert и отобразить [object Object], [object Object],...

Есть ли что-то, что мне не хватает здесь

4b9b3361

Ответ 1

Я думаю, что данные возвращены уже в JSON, не нужно JSON.parse(), если только в строковом формате.

$scope.products= data;

Ответ 2

Ваша переменная myjson уже является допустимым объектом JavaScript. Вам не нужно использовать JSON.parse на нем.

Ответ 3

Почему вы используете JSON.parse в два раза?

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

Вы уже проанализировали объект данных. Итак, почему вы разобрали еще один раз?

также я думаю, что ваши данные возвращают результат json, поэтому вам не нужно разбирать объект

просто используйте это

$scope.products = data;

Ответ 4

Простое решение, просто используйте абсолютный URL:

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.

В конкретном случае в приложении Single page angular токен доступа передавался в JSON.parse(), и очистка куки файлов в браузере решила проблему для меня.