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

Python数据解析至JavaScript并对接Chart JS失败问题排查

数据解析与Chart JS可视化失败的排查方案

以下是针对你遇到的问题的具体排查点和解决方法:

1. 检查JSON文件路径是否正确

你的fetch请求路径是Solo-Trade-Journal/monthly_data.json,这个路径是相对于HTML文件所在位置的,而非Python脚本的位置:

  • 如果HTML文件直接放在根目录,JSON在Solo-Trade-Journal子文件夹里,路径是正确的;如果HTML也在Solo-Trade-Journal文件夹内,应改为./monthly_data.json或直接monthly_data.json。
  • 打开浏览器开发者工具(F12)切换到Network标签,刷新页面后查看JSON请求的状态码:若为404则路径错误;若为200,再确认响应内容是否符合预期。

2. 验证JSON数据的有效性

Python端生成JSON的潜在问题

你的Python代码遍历data['data'],如果原始data不是包含data键的字典,而是直接的列表,会触发KeyError,导致脚本无法生成JSON文件,或生成错误格式的JSON:

  • 先确认原始data的结构:若data本身就是列表,需改为for entry in data:。
  • 检查生成的monthly_data.json文件内容,确保是合法JSON格式(无多余逗号、引号配对正确)。可直接在浏览器中打开该JSON文件,若提示格式错误,说明生成过程有问题。

JS端解析JSON的问题

如果JSON格式正确,但data.map报错,说明data不是数组。可在then(data => {})中添加console.log(data),在控制台查看数据结构是否为预期的数组。

3. 确认Chart JS的加载顺序

HTML中必须先加载Chart JS库,再执行你的绘图代码,否则Chart对象会不存在:

  • 确保HTML中有类似以下的引入代码,且放在自定义JS代码之前:
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
    
  • 若使用本地文件,需确认本地Chart JS文件路径正确,无加载失败情况。

4. 确保Canvas元素已正确加载

如果document.getElementById('myLineChart')返回null,后续的getContext会报错,导致图表无法生成:

  • 检查HTML中是否存在<canvas id="myLineChart"></canvas>元素。
  • 将JS代码放在HTML的</body>标签之前,或用DOM加载事件包裹:
    document.addEventListener('DOMContentLoaded', function() {
        // 你的fetch和Chart代码放在此处
    });
    

5. Jinja传数据的正确方式(针对之前的尝试)

若想回到用Jinja直接传数据的方案,需确保数据被正确注入到JS中:

  • 在Python中将数据转为JSON字符串后,在HTML的JS部分用{{ monthly_list_json|safe }}赋值,避免Jinja转义引号:
    var chartData = {{ monthly_list_json|safe }};
    var labels = chartData.map(item => item.date);
    var growth = chartData.map(item => item.growth);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:07:33