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

使用jQuery DataTable函数获取页码时触发TypeError错误求助

解决jQuery DataTable "DataTable is not a function" 错误

这个错误是DataTables插件使用中非常常见的问题,本质是DataTables没有正确绑定到jQuery实例上,或者代码执行时机不对。结合你的代码场景,我整理了几个最可能的解决方案,你可以按顺序排查:

1. 检查引入顺序是否正确

DataTables是依赖jQuery的插件,必须先引入jQuery核心库,再引入DataTables的JavaScript文件,顺序颠倒就会导致找不到DataTable方法。正确的引入结构应该是这样的:

<!-- 先加载jQuery核心库 -->
<script src="path/to/jquery.min.js"></script>
<!-- 再加载DataTables的JS文件 -->
<script src="path/to/jquery.dataTables.min.js"></script>
<!-- 可选但推荐:加载DataTables的样式文件,保证表格显示正常 -->
<link rel="stylesheet" href="path/to/jquery.dataTables.min.css">

确保这些引入代码放在你的业务逻辑代码之前。

2. 确认DataTables文件是否正确加载

打开浏览器开发者工具(F12),切换到Network标签,刷新页面后查看jquery.dataTables.min.js的加载状态:

  • 如果状态码是404,说明文件路径写错了,你需要修正路径,确保文件存在于指定位置;
  • 如果看不到这个文件的请求记录,说明你根本没引入DataTables的JS文件,补上即可。

3. 避免重复引入jQuery

有时候页面中会不小心多次引入jQuery(比如头部引了一次,底部又引了一次),这会导致DataTables绑定到第一个jQuery实例上,但你的业务代码可能使用的是后面加载的jQuery实例,自然找不到DataTable方法。
搜索页面中的<script>标签,确保只引入一次jQuery。

4. 确保jQuery和DataTables版本兼容

不同版本的DataTables对jQuery的版本有明确要求:

  • DataTables 1.10.x 需要jQuery 1.7及以上版本;
  • 最新的DataTables 1.13.x 推荐使用jQuery 3.5+版本。
    如果你的jQuery版本太老,或者DataTables版本与jQuery不匹配,都可能触发兼容性错误。可以查看DataTables的版本说明,匹配合适的版本组合。

5. 确保代码在DOM就绪后执行,且表格已初始化

你的代码可能在DOM还没加载完成,或者表格还没被DataTables初始化时就执行了,这时候$('#example1')可能找不到元素,或者还没被赋予DataTables的方法。可以把代码包裹在$(document).ready()里,确保DOM加载完成后再执行:

$(document).ready(function() {
    // 初始化表格(加上retrieve: true避免重复初始化已存在的表格实例)
    var table = $('#example1').DataTable({
        retrieve: true
    });
    var info = table.page.info();
    pageNo = info.page + 1;
    
    $.ajax({
        url:"<?=ADMIN_PRODUCT_EDIT?>",
        type:"post",
        async: true, // 这里改成布尔值,不要加引号,符合参数规范
        data:{pid: id, pageNo: pageNo},
        beforeSend:function(){ 
            // 这里可以添加加载提示,比如显示loading动画
        },
        success:function(data){ 
            alert(data); 
            $("#product_edit_form").html(data); 
        },
        error:function(xhr){ 
            // 错误提示更友好一些,方便排查问题
            alert('请求失败:' + xhr.statusText); 
        },
    });
});

额外小提示

你代码里的async:"true"其实应该写成async: true,因为async是布尔类型参数,字符串"true"会被JavaScript解析为布尔值true,但规范写法是直接使用布尔值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:14:34