我在我当前的项目中使用DataTables,由于某种原因,当我在手机上运行应用程序时,它不会加载ajax提供的任何数据,它会给我以下错误。
Uncaught TypeError: $(...).DataTable is not a function
然而,在我的台式电脑上,它完全正常。我正在使用DataTables的bootstrap 4版本,我的app.js如下所示
require( 'datatables.net-bs4' );
require( 'datatables.net-responsive-bs4' );
我在视图中如下实例化DataTable - 使用@stack强制它在app.js包含下面
$(function() {
$('#users-table').DataTable({
processing: true,
serverSide: true,
responsive: true,
ajax: {
url: '{{ route('user.indexData') }}',
},
pagingType: "full_numbers",
oLanguage: {
"sSearch": "Filter:",
"sInfo": "Showing _START_ to _END_ of _TOTAL_ user(s)",
"sInfoEmpty": "No users to show",
"sLengthMenu": "Show _MENU_ users"
},
columns: [
{ data: 'id', name: 'id', responsivePriority: 1},
{ data: 'name', name: 'name', responsivePriority: 2 },
{ data: 'email', name: 'email', responsivePriority: 3 },
{ data: 'action', name: 'action', searchable: false, orderable: false, responsivePriority: 4 }
],
"drawCallback": function () {
$('.dataTables_paginate > .pagination').addClass('flex-wrap');
}
});
});
有没有人知道为什么它只会在我的移动设备上给我这个错误,以及任何可能的修复?
答案 0 :(得分:0)
我通过添加" window.DataTables"来解决我的问题。在我的需求面前,这允许系统识别DataTables库,即使它没有自动发现它。我认为,正如Gyuhyeon Lee在评论中所建议的那样,是由于浏览器的旧版本所致。
以下是修复它的代码。
window.DataTables = require( 'datatables.net-bs4' );
我已经多次解决了这个问题,但是在使用移动设备时,我从来没有意识到页面被缓存了 - 导致同样的错误被喷出。所以请记住清除你的缓存。