Как получить данные OUT моего возвращаемого значения асинхронного сервиса? - PullRequest
0 голосов
/ 02 июня 2018

У меня возникли проблемы с получением фактических данных из возврата от вызова API.Я могу видеть значения, выводимые в журнал, но когда я пытаюсь получить к нему доступ, используя data [0] .admin_url , возвращается undefined .

this.apiService
    .getCCUrls()
    .then(function(data){
        console.log(data); //output in the image below
        console.log(data[0].admin_url); //returns undefined
    });

Какойвызывает это:

APIService.prototype.getCCUrls = function() {
    return this.makePublicApiRequest({
        method: 'GET',
        url: '/v1/cc-instances',
    });
};

Между ними есть некоторый простой служебный код, но в конце концов он доходит до этой функции ...

APIService.prototype.makeRequest = function(config) {
    return this.$http(config)
               .then(function(response) {
                   // If we get a replacement token, update it.
                   this.authService.checkResponseHeaders(response);

                   var data = response.data;
                   if (data.data) {
                       return data.data;
                   }
                   if (data) {
                       return data;
                   }
                   return response;
               }.bind(this));
};

Наконец, это то, что выводится в консоли.log:

enter image description here

Итак, в моем первом наборе кода, как мне получить переменные admin_url, agent_url или type?

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Эта проблема может быть вызвана тем, что подчеркивание является \u0332 подчеркиванием:

var x = [{"admin\u0332url":"/cca"}];
console.log(x);
console.log(x[0].admin_url);
console.log(x[0].admin\u0332url);
console.log(Object.keys(x[0]))

Консоль разработчика не имеет возврата к началу, поэтому подчеркивание \u0332 выглядит так же, как подчеркивание ASCII.

x[0].admin_url будет undefined если вы пытаетесь получить к нему доступ с помощью строки, которая использует подчеркивание ASCII.

0 голосов
/ 02 июня 2018

Вам необходимо получить доступ к свойству данных ответа, поэтому оно должно быть,

this.apiService
    .getCCUrls()
    .then(function(data){
        console.log(data.data[0].admin_url);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...