0

我有一个调用 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)控制台中打印字典,但是当我打印特定键时,它返回未定义。

在此处输入图像描述

我在另一个具有不同 API 的页面上使用了完全相同的代码块,它在那里完美运行。但是当我在这里复制粘贴代码时,只要我更改密钥,它就会停止工作。

值得注意的是,我更像是一个 Python 人,并且正在尝试创建这个页面作为我的 API 的基本前端。我对 JQuery 了解不多,我从这里的答案中复制了这段代码。

4

1 回答 1

1

由于响应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)
})
于 2020-04-21T16:23:28.583 回答