Печать элемента данных JSON в консоль с помощью angular.js - PullRequest
1 голос
/ 17 июня 2019

Я хочу получить доступ к члену объекта JSON с помощью angularjs.Я могу напечатать весь массив объектов json, но не могу получить уникальный доступ к члену объекта.

          $scope.rows = []; // init empty array
          $scope.datainput =[];

          $http({
           method: 'GET',
           url: 'Data/input.json'
        }).then(function (data){
           $scope.datainput=data;
           //console.log($scope.datainput);
           console.log($scope.datainput);


        },function (error){
           console.log("big error");
        });



        var json=JSON.parse($scope.datainput);
        console.log(json[0].status);

Я пробовал этот код также, но все еще получаю ту же ошибку.

           $scope.temp = "";
           $scope.rows = []; // init empty array
           $scope.datainput =[];


        $http({
            method: 'GET',
            url: 'Data/input.json'
         }).then(function (data){
            $scope.datainput=data;
            //console.log($scope.datainput);
            console.log($scope.datainput);

          var json=JSON.parse($scope.datainput);
          console.log(json[0].status);

         },function (error){
            console.log("big error");
         });

json файл input.json:

[
    {"status":"payfail","value":"310"},
    {"status":"payinit","value":"100"},
    {"status":"paysuccess","value":"200"},
    {"status":"payreturn","value":"50"}

]

Я получаю эту ошибку:

SyntaxError: Неожиданный конец ввода JSON в JSON.parse ()

Решение будет таким ...

           $scope.rows = []; // init empty array
           $scope.datainput =[];


        $http({
            method: 'GET',
            url: 'Data/input.json'
         }).then(function (data){
            $scope.datainput=data.data;
            //console.log(data);



            console.log($scope.datainput);

            var json=JSON.parse(JSON.stringify($scope.datainput));
            console.log(json[0].status);


         },function (error){
            console.log("big error");
         });

Ответы [ 2 ]

2 голосов
/ 17 июня 2019

Я полагаю, что вы пытаетесь проанализировать строку JSON, прежде чем она будет возвращена обещанием.

Попробуйте поместить код анализа в блок then, чтобы он выполнялся в правильном порядке.

При дополнительном расследовании обновленный ответ:

Помимо исправления порядка выполнения обещания, выясняется, что существует проблема с доступом к вамданные в переменной ответа.

Проверьте документацию на $ http здесь: W3Schools.com $ http doco

Вы увидите, что значение ответа на обратный вызов на самом деле содержитчлен вызвал данные для полезной нагрузки ответа.Чтобы получить эту работу, попробуйте получить доступ к элементу данных объекта ответа.

$scope.datainput=data.data;

Вероятно, было бы неплохо переименовать объект ответа данных из данных в ответ для удобства чтения.

0 голосов
/ 17 июня 2019

Вы можете использовать этот код для решения этого:

$scope.rows = []; // init empty array
  $scope.datainput =[];

          $http({
           method: 'GET',
           url: 'Data/input.json'
        }).then(function (data){
           $scope.datainput=data.data;
           console.log($scope.datainput);

        var json= angular.fromJson($scope.datainput); 
         console.log(json[0].status);

        },function (error){
           console.log("big error");
        });

Вы не должны писать Json.Parse из функции Get Вы должны написать этот код внутри блока then и использовать data.data для получения данных из json файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...