Ответ 1
Я думаю, что данные возвращены уже в JSON, не нужно JSON.parse()
, если только в строковом формате.
$scope.products= data;
Вопрос от 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],...
Есть ли что-то, что мне не хватает здесь
Я думаю, что данные возвращены уже в JSON, не нужно JSON.parse()
, если только в строковом формате.
$scope.products= data;
Ваша переменная myjson
уже является допустимым объектом JavaScript. Вам не нужно использовать JSON.parse на нем.
Почему вы используете JSON.parse
в два раза?
var myjson = JSON.parse(data);
$scope.products = JSON.parse(myjson);
Вы уже проанализировали объект данных. Итак, почему вы разобрали еще один раз?
также я думаю, что ваши данные возвращают результат json, поэтому вам не нужно разбирать объект
просто используйте это
$scope.products = data;
Простое решение, просто используйте абсолютный 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
.
В конкретном случае в приложении Single page angular токен доступа передавался в JSON.parse()
, и очистка куки файлов в браузере решила проблему для меня.