DataTables无法在移动设备上加载

时间:2018-03-27 11:06:17

标签: javascript jquery laravel datatables

我在我当前的项目中使用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');
        }
    });
});

有没有人知道为什么它只会在我的移动设备上给我这个错误,以及任何可能的修复?

1 个答案:

答案 0 :(得分:0)

我通过添加" window.DataTables"来解决我的问题。在我的需求面前,这允许系统识别DataTables库,即使它没有自动发现它。我认为,正如Gyuhyeon Lee在评论中所建议的那样,是由于浏览器的旧版本所致。

以下是修复它的代码。

window.DataTables = require( 'datatables.net-bs4' );

我已经多次解决了这个问题,但是在使用移动设备时,我从来没有意识到页面被缓存了 - 导致同样的错误被喷出。所以请记住清除你的缓存。