You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Chart.js时遭遇Uncaught TypeError: t.ticks.map is not a function错误求助

解决Chart.js的Uncaught TypeError: t.ticks.map is not a function错误

这个错误我太熟悉了——它的核心原因很明确:Chart.js 要求图表的labels必须是数组类型,但你代码里把labels设成了字符串"something",而字符串并没有map方法,这就导致内部渲染逻辑直接抛出了错误。

下面是具体的排查和修复步骤:

1. 核心修复:把labels改成数组

Chart.js的labels字段需要和datasets里的data数组长度一一对应,你可以选择两种方式设置:

  • 如果后端接口会返回对应的标签(比如月份名称),直接用后端返回的数组,比如result.Labels;
  • 如果后端没返回,就手动定义一个和数据长度匹配的数组。

2. 确保后端返回的数据格式正确

检查/home/getmonthly/接口返回的JSON,确认Revenues和Expenses都是数组类型,比如:

{
  "Labels": ["1月", "2月", "3月", "4月", "5月", "6月"],
  "Revenues": [1200, 1500, 1800, 1600, 2000, 2200],
  "Expenses": [800, 900, 1000, 950, 1100, 1200]
}

3. 补全代码中缺失的配置

你代码里expenses数据集的配置没写完,需要补全borderColor和borderWidth这些必要属性,避免额外的初始化问题。

完整修复后的代码示例

$.ajax({ 
  url: "/home/getmonthly/", 
  type: "GET", 
  success: onSuccess, 
  error: onErrorCall 
}); 

function onSuccess(result) { 
  // 优先用后端返回的labels,没有的话用默认数组兜底
  const chartLabels = result.Labels || ["1月", "2月", "3月", "4月", "5月", "6月"];
  
  var ctx = $("#BarChart")[0].getContext('2d'); 
  var myChart = new Chart(ctx, { 
    type: 'bar', 
    data: { 
      labels: chartLabels, // 这里必须是数组类型
      datasets: [{ 
        label: 'revenues', 
        data: result.Revenues, // 确保这是数组
        backgroundColor: 'rgba(75, 192, 192, 0.2)', 
        borderColor: 'rgba(75, 192, 192, 1)', 
        borderWidth: 1 
      }, { 
        label: 'expenses', 
        data: result.Expenses, // 确保这是数组
        backgroundColor: 'rgba(54, 162, 235, 0.2)',
        borderColor: 'rgba(54, 162, 235, 1)',
        borderWidth: 1 
      }]
    },
    options: {
      scales: {
        y: {
          beginAtZero: true // 让Y轴从0开始,更直观展示收支
        }
      }
    }
  }); 
}

function onErrorCall(xhr, status, error) {
  console.error('获取月度数据失败:', error);
  // 这里可以添加前端错误提示,比如显示"数据加载失败,请重试"
}

额外排查技巧

  • 打开浏览器控制台(F12),切换到Network标签,查看/home/getmonthly/请求的响应内容,确认所有字段的格式是否符合要求;
  • 如果还是报错,检查控制台的其他错误信息,是否有其他代码干扰了Chart.js的初始化。

内容的提问来源于stack exchange,提问作者Kavrat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:32:51