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

Django Chartit图表无法显示,疑似jQuery问题求助

解决Chartit中Uncaught ReferenceError: $ is not defined的问题

我太懂这种憋屈感了——明明看着对象数据传对了,必要的JS也都按要求引入了,结果控制台突然蹦出这个报错,翻了四五篇相关帖子要么解决方案不管用,要么根本没给出可行办法,简直头大。咱们从这个错误的核心原因入手,一步步排查:

这个报错的本质是Chartit依赖的jQuery没有被正确识别,因为Chartit是基于jQuery和Highcharts构建的,必须确保jQuery在所有相关脚本之前完成加载,且没有冲突。

1. 先检查脚本加载顺序(最常见的触发原因)

你必须保证jQuery的脚本标签绝对排在highcharts.js和chartloader.js前面,顺序颠倒就会直接触发这个错误。举个正确的加载示例:

<!-- 第一步:加载jQuery -->
<script src="jquery.min.js"></script>
<!-- 第二步:加载Highcharts -->
<script src="highcharts.js"></script>
<!-- 第三步:加载Chartit相关脚本 -->
<script src="chartloader.js"></script>

哪怕用CDN加载也一样,顺序不能乱——jQuery必须是第一个被加载的依赖。

2. 验证jQuery是否真的加载成功

打开浏览器控制台,输入typeof $回车:

  • 如果返回"function",说明jQuery加载正常;
  • 如果返回"undefined",那就是jQuery根本没加载进来:
    • 检查脚本路径是不是写错了(比如相对路径层级错误)
    • 看看有没有被浏览器的广告拦截插件挡住了jQuery文件
    • 可以写一段简单的测试代码验证:
      $(document).ready(function() {
          console.log("jQuery加载成功啦!");
      });
      
      要是控制台能输出这句话,那jQuery没问题,问题出在Chartit和Highcharts的联动上。

3. 排查Chartit的配置(如果是Django环境下使用)

如果是在Django中使用Chartit,建议用官方提供的模板标签加载图表,它会自动处理脚本依赖顺序:

{% load chartit %}
{{ chart_list|load_charts:"your_chart_container_id" }}

要是你手动引入了脚本,很可能和模板标签生成的脚本冲突,建议要么全用模板标签,要么全手动控制所有脚本的加载顺序,别混着来。

4. 检查有没有jQuery冲突

要是页面里还有其他JS库(比如Prototype、Zepto)也用$当变量名,就会和jQuery冲突。可以试试用jQuery代替$测试,或者用jQuery的冲突解决方法:

var jq = jQuery.noConflict();
// 确保Chartit/Highcharts使用这个jq对象作为依赖

不过Chartit本身一般会处理这个,但如果是手动加载的脚本,可能需要额外调整。

5. 试试更新依赖版本

有时候是版本不兼容闹的——比如Chartit对jQuery或Highcharts的版本有特定要求。你可以查下Chartit的官方文档,找个兼容的版本组合试试,比如jQuery 3.x搭配Highcharts 8.x以上的版本,很多时候更新后问题就消失了。

我之前碰到过一模一样的问题,就是手贱把Highcharts放在jQuery前面加载了,调整顺序后立刻就好了,你可以先从这个方向查起!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:14:01