首页 > 解决方案 > 将 Django REST 框架数据转换为 javascript 数组时缺少值

问题描述

我正在尝试提取一些通过 AJAX 放置在我的 API 端点的数据。但是,当我遍历 json 对象以将其放置在我的 javascript 数组中时,似乎我缺少一些值。这就是我的意思:

我的其余 api 数据:

    HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "sales_rev_quota": [],
    "sales_revi": [
        {
            "month": 1,
            "sum": 123000
        },
        {
            "month": 2,
            "sum": 132000
        }
    ],

这是我将其提取到 javascript 数组中的代码:

    endpoint = 'api/chart/data'
$.ajax({
  type: "GET",
  url: endpoint,    
  success: function(data){
    window.revi_sum = []
    window.revi_month = []


    window.sales_revi = data.sales_revi
    for(i=0 ; i < sales_revi.length  ; i++){
        revi_sum.push(sales_revi[i].sum)
        revi_month.push(moment().month(sales_revi[i].month - 1).format("MMMM"))
    console.log(revi_month)
    console.log(revi_sum)
    }
},
error: function(error_data){
console.log('error')
console.log(error_data)
}
})

这是我的控制台中显示的内容:

    ["January"]
0: "January"
length: 1
__proto__: Array(0)
(index):112 
[123000]
0: 123000
length: 1
__proto__: Array(0)

标签: javascriptajaxdjango-rest-framework

解决方案


您的日志被放置在 for 循环体中。将它们移到 for 循环体之外应该可以解决问题。

window.sales_revi = data.sales_revi;

for (let i = 0; i < sales_revi.length; i++) {
  revi_sum.push(sales_revi[i].sum);
  revi_month.push(moment().month(sales_revi[i].month - 1).format('MMMM'));
}

console.log(revi_month);
console.log(revi_sum);    

推荐阅读