2016-09-14 3 views
-1

Мой API возвращает следующий JSON ответ:Extract ответ JSON с REST API

[{"result":{"status":1,"message":"Token generated successfully","stoken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImp0aSI6IjVmMXoyaTNhbDJ4eCJ9.eyJpc3MiOiJodHRwOlwvXC9lc2FsZXMuY29tIiwiYXVkIjoiZVNhbGVzIiwianRpIjoiNWYxejJpM2FsMnh4IiwiaWF0IjoxNDczODMwNDExLCJuYmYiOjE0NzM4MzA0NzEsImV4cCI6MTQ3MzgzNDAxMSwidWlkIjoiYWRtaW4iLCJ1Z3JwIjoic2FsZXMifQ.eeFU68UdAIkZuWtSK8H0mfJRsGM0aaCdZ2MJX4ZQUF0"}}] 

Мой код в ионическом:

.controller('loginCtrl', ['$scope', '$http', function ($scope, $http) { 
    $scope.data = {}; 

    $scope.submit = function(){ 
     var link = 'http://myapi.com/jwt/auth/'; 

     $http.post(link, {username : $scope.data.username, password : $scope.data.password}) 
     .success(function(data, status, headers,config){ 
      $scope.response = data; // for UI 

      var jsParse = JSON.parse(data)  

      //how to retrieve the 'stoken' value from the JSON ? 


     }) 
     .error(function(data, status, headers,config){ 
      console.log('data error'); 
     }) 
     .then(function (res){ 
      $scope.response = res.data; 

     }); 
    }; 
}]) 

PHP код, который генерировать JSON:

$responses[] = array('result'=> 
        array('status' => 1, 
          'message' => 'Token generated successfully', 
          'stoken' => ''.$token, 
         ) 
        ); 

    //return json_encode(['result' => 1, 'message' => 'Token generated successfully', 'token' => '' . $token,]); 
    return json_encode($responses); 
  1. Как я могу получить «украденное» значение из JSON?

  2. Как я могу пройти через JSON, если он имеет несколько записей «результата»? не

+0

в JS вы можете получить доступ через Индекс: 'jsParse ['stoken']' – Radinator

+0

json return in >> [{\ "result \": {\ "status \": 1, \ "message \": \ "Маркер успешно создан \", \ "stoken \": \ "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImp0aSI6IjVmMXoyaTNhbDJ4eCJ9.eyJpc3MiOiJodHRwOlwvXC9lc2FsZXMuY29tIiwiYXVkIjoiZVNhbGVzIiwianRpIjoiNWYxejJpM2FsMnh4IiwiaWF0IjoxNDczODQ4OTk1LCJuYmYiOjE0NzM4NDkwNTUsImV4cCI6MTQ3Mzg1MjU5NSwidWlkIjoiYWRtaW4iLCJ1Z3JwIjoic2FsZXMifQ.MJLIYAslvJp_rSmPUEnFK7ZjYLx2tv8ydhTY3nYtbRA \"}}] << там слэш добавляется к каждой цитате, будет вызывать недопустимое JSON? –

+0

** данные ** вы пытаетесь выполнить синтаксический анализ ('var jsParse = JSON.Parse (data);' уже JSON. Поэтому вам нужно всего лишь выполнить var var token = data ['stoken]; '. вы. – Radinator

ответ

0

$http.post(link, {username : $scope.data.username, password : $scope.data.password}) 
 
     .success(function(data, status, headers,config){ 
 
      $scope.response = data; 
 
    
 
      $scope.stoken = $scope.response[0].result.stoken; 
 
     
 

 

 
     }) 
 
     .error(function(data, status, headers,config){ 
 
      console.log('data error'); 
 
     }) 
 
     .then(function (res){ 
 
      $scope.response = res.data; 
 

 
     });

Там это не требуется JSON.parse, угловатые использует HTTP intercepters, которые автоматически делают это для вас, и ваш объект ответа уже содержит объект JSON.

+0

из консоли >>> $ scope.response [0] .result не определен. Я добавил свой PHP-код к вопросу. –

+0

'function success (response) { $ scope.stoken = response.data [0] .result.stoken; } 'попробуйте это. –