Ajax 未捕获类型错误:无法读取属性';流行音乐';在更改HTMLSelectElement.onchange时未定义的

Ajax 未捕获类型错误:无法读取属性';流行音乐';在更改HTMLSelectElement.onchange时未定义的,ajax,django-rest-framework,chart.js,Ajax,Django Rest Framework,Chart.js,我正在尝试创建一个函数,允许我根据在下拉菜单上选择的内容更改chart.js数据。关于chart.js x django rest框架的教程还不多,我根据在线文章中的部分和片段将它们拼凑起来 这个想法是在AJAX函数中调用一个函数,这样我就能够更改进入模型本身的数据数组,但是我在这样做时遇到了一些困难 这是我的api类: class ChartData(APIView): authentication_classes = [SessionAuthentication, BasicAuthenti

我正在尝试创建一个函数,允许我根据在下拉菜单上选择的内容更改chart.js数据。关于chart.js x django rest框架的教程还不多,我根据在线文章中的部分和片段将它们拼凑起来

这个想法是在AJAX函数中调用一个函数,这样我就能够更改进入模型本身的数据数组,但是我在这样做时遇到了一些困难

这是我的api类:

class ChartData(APIView):
authentication_classes = [SessionAuthentication, BasicAuthentication]
permission_classes = [IsAuthenticated]
def get(self, request, format=None):
    current_user = request.user
    print(current_user.id)

    sales_rev_data = Sales_project.objects.values_list('sales_project_est_rev').filter(sales_project_status = 'p4').filter(sales_extras = current_user.id)
    sales_project_closing_date_data = Sales_project.objects.values_list('sales_project_closing_date').filter(sales_project_status = 'p4')


    conversion_data = Sales_project.objects.all().filter(sales_project_status = 'p4').filter(sales_extras = current_user.id).count()
    notconverted_data = Sales_project.objects.all().filter(sales_extras = current_user.id).count() - conversion_data

    cost_data_per_unit = Sales_project.objects.values_list('material_costs').filter(sales_project_status = 'p4').filter(sales_extras = current_user.id)



    moq_data = Customer_requirement.objects.values_list('moq').filter(sales_project__sales_project_status__contains= 'p4')
    cost_data = np.array(list(moq_data)) * np.array(list(cost_data_per_unit))
    profit_data = np.array(list(sales_rev_data))- cost_data


    data = {
        "sales_rev": sales_rev_data, 
        "sales_time_axis": sales_project_closing_date_data,
        "conversion_label": ['Converted','Not Converted'],
        "conversion_data": [conversion_data,notconverted_data],
        "profit_data_per_project": profit_data
    }   

    return Response(data)
这是api的终点:

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

{
    "sales_rev": [
        [
            100000
        ],
        [
            125000
        ],
        [
            123000
        ]
    ],
    "sales_time_axis": [
        [
            "2019-12-29T10:42:25Z"
        ],
        [
            "2019-12-23T03:13:03Z"
        ],
        [
            "2019-12-23T02:50:51Z"
        ]
    ],
    "conversion_label": [
        "Converted",
        "Not Converted"
    ],
    "conversion_data": [
        3,
        1
    ],
    "profit_data_per_project": [
        [],
        [],
        []
    ]
}
这是我的ajax函数:

endpoint = 'api/chart/data'
$.ajax({
  type: "GET",
  url: endpoint,    
  success: function(data){
    console.log(data)
    sales_time = data.sales_time_axis
    sales_rev = data.sales_rev
    conversion_label = data.conversion_label
    conversion_data= data.conversion_data
    profit_data_per_project= data.profit_data_per_project
    createChart()
    change(sales_rev)

},
error: function(error_data){
console.log('error')
console.log(error_data)
}
})
以下是更改函数定义:

function change(data){
var val = "Hi";
console.log(val)
data.pop()
console.log(data)
}
这是我的HTML:

    <div class="card-body" id="card_body">
      <select class="text_select" id="chart-select" onchange="change()" name="select">
        <option value="All">All Time</option>
        <option value="3" id = 'hello'>Last 3 Months</option>
        <option value="6">Last 6 Months</option>
        <option value="12">Last Year</option>
        <option value="24">Last 2 Years</option>
      </select>
      <canvas id="myChart"></canvas>
    </div>

我将非常感谢任何人的意见

无法读取未定义的属性“pop”
表示行
data.pop()
,数据是
未定义的
,表示
未定义的.pop()
。你能在你的
success
回调中
console.log(data)
并尝试查看传递给
change(sales\u rev)
function的是什么吗好的,
change()
不知何故被调用了
empty
数据,我能看到
onchange=“change()”
html
代码共享中。
无法读取未定义的属性“pop”
表示,行
data.pop()
,数据是
未定义的
,表示
未定义的.pop()
。你能在你的
success
回调中
console.log(data)
并尝试查看传递给
change(sales\u rev)
function的是什么吗好的,
change()
不知何故被调用了
空的
数据,我能在
html
代码共享中看到
onchange=“change()”
        {sales_rev: Array(3), sales_time_axis: Array(3), conversion_label: Array(2), conversion_data: Array(2), profit_data_per_project: Array(3)}
(index):166 Hi
(index):168 (2) [Array(1), Array(1), _chartjs: {…}, push: ƒ, pop: ƒ, shift: ƒ, splice: ƒ, …]
favicon.ico:1 GET http://127.0.0.1:8000/favicon.ico 404 (Not Found)
(index):166 Hi
(index):167 Uncaught TypeError: Cannot read property 'pop' of undefined
    at change ((index):167)
    at HTMLSelectElement.onchange ((index):80)
change @ (index):167
onchange @ (index):80