JQuery отказ от чтения значений из словаря, возвращенного API формы - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть страница, которая вызывает API и читает ответ, используя JQuery. Это код

$( document ).ready(function() {
    $("#fund_search").keyup(function(){
        var query_string = $("#fund_search").val();
        console.log(query_string)
        if(query_string.length < 6){
            $("#result").text("")
        }
        if(query_string.length >= 6){
            query_string = parseInt(query_string)
            var query = {"amfi_code": query_string}
                $.ajax({ 
                    type:"POST",
                    url:"http://127.0.0.1:8000/latestreturn",
                    data: JSON.stringify(query), 
                    contentType: 'json',
                    success: function(res) {
                        console.log(res)
                        $.each(res, function(i, item){
                            console.log(item.year_t),
                            console.log(item.year_f),
                            console.log(item.year_o)
                        })
                    }.bind(this),
                    error: function(xhr, status, err) {
                        console.error(xhr, status, err.toString());
                    }.bind(this)
            }); 
        }  
    })
});

, строка console.log(res) печатает словарь в консоли, но когда я печатаю указанные c ключи, он возвращает неопределенное значение.

enter image description here

Я использую точно такой же блок кода на другой странице с другим API, и он отлично работает там. Но когда я копирую и вставляю сюда код, как только я меняю ключи, он перестает работать.

Стоит отметить, что я скорее человек Python и пытаюсь создать эту страницу так же, как основа c для моего API. У меня нет особых знаний о JQuery, и я скопировал этот код из ответа здесь.

1 Ответ

1 голос
/ 21 апреля 2020

Поскольку ответ res не является массивом, $.each будет циклически изменяться для ключей объекта.

в качестве примечания, возможно, к нему следует добавить один <tr>

const object = {
  data: 'abc'
}

$.each(object, (i, item) => {
  // outputs 'data', 'abc'
  console.log(i, item)
})

То, чего вы пытаетесь достичь, может быть следующим:

success: function(res) {
  console.log(res.year_t);
  console.log(res.year_f);
  console.log(res.year_o);
}

Или , если res становится массивом, этот другой пример

const object = [{
  data: 'foo'
}, {
  data: 'bar'
}]

$.each(object, (index, item) => {
  console.log(item.data)
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...