在DatatablesJQuery和Ajax中,DataTable(..)不是一个函数



我在ASP.NET MVC项目中收到以下错误。页面中有一个对*.js文件的引用。我尝试了互联网上几乎所有能找到的解决这个问题的方法。

从页面的源代码来看,当它被加载到浏览器中时,它似乎按照正确的顺序加载了一次:

<script src="/Scripts/old/Scripts/jquery-1.10.2.js"></script> <!-- I tried new and old jquery Version -->
<script src="/Scripts/bootstrap.js"></script>
<script src="/scripts/bootbox.js"></script>
<script src="/scripts/datatables/jquery.datatables.js"></script>
<script src="/scripts/datatables/datatables.bootstrap.js"></script>

代码(index.cshtml(:

$(document).ready(function() {
$('#customers').DataTable()({
ajax: {
url: '/api/customers',
dataSrc: ''
},
columns: [{
data: "name",
render: function(data, type, customer) {
return "<a href='/customers/edit/" + customer.id + "'>" + customer.name + "</a>";
}
}, {
data: "name"
}, {
data: "id",
render: function(data) {
return "<button class='btn-link js-delete' data-customer-id=" + data + ">Delete</button>";
}
}]
});
// More Code
});

错误,来自Chrome的开发者控制台:

客户:79未捕获类型错误:$(…(。DataTable(…(不是HTMLDocument中的函数
。(客户:79(
着火了(jquery-1.10.2.js:3062(
Object.fireWith[as-resolveWith](jquery-1.010.2.js:3174(
1Function.ready(jquery=1.10.2.js:447(
2HTMLDocument.completed(jquery~1.10.2.js:118(

有什么建议吗?

好的,已解决。第一条评论是对的。

$('#customers'(.DataTable

您需要在"渲染脚本"部分之前导入这些脚本。

我也遇到过类似的问题,这让我变得偏执——这种情况只是偶尔发生。事实证明

@Scripts.Render("~/bundles/jquery")

被多次呼叫。

在这个捆绑包的重新实例化之后,事情似乎被重置了,数据表失去了对其某些功能的访问权限。

这种重复发生了好几次,因为它在主容器页面上被调用,也在其中的子模式对话框和部分视图中被调用

我必须设计一种方法来组织我的代码,这样我就不需要在子内容中重新实例化捆绑包。

最新更新