web-dev-qa-db-fra.com

TypeError: $ (...) DataTable n'est pas une fonction

J'essaie d'utiliser les tables de données du plug-in jquery, mais je n'arrive pas à charger la fonction. Je continue à avoir cette erreur:

Uncaught TypeError: $(...).DataTable is not a function
(anonymous function) @ index.php:167
m.Callbacks.j @ jquery.min.js:2
m.Callbacks.k.fireWith @ jquery.min.js:2
m.extend.ready @ jquery.min.js:2
J @ jquery.min.js:2

Ci-dessous mon code JS:

$(document).ready(function(){
        $('table#tableID').DataTable({
            paging: true
        });
    });

J'utilise jQuery V. 1.11.1 J'ai essayé de chercher une solution et j'ai vu des gens dire que jQuery n'était pas chargé. J'exécute avec succès d'autres fonctions jQuery sur la même page. C’est aussi la seule fonction .ready sur cette page. Nous pouvons dire que jQuery est présent, car lorsque le document est prêt, il exécute la fonction. J'ai également essayé de placer les importations du fichier js et css à plusieurs endroits, comme suggéré, mais cela n'a pas fonctionné. Est-ce que quelqu'un a la moindre idée de comment résoudre ce problème?

EDITS:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <link rel="stylesheet" type="text/css" href="/css/jquery.dataTables.css">
<script type="text/javascript" charset="utf8" src="/js/jquery.dataTables.js"></script>
5
SML

L'ordre des scripts est important lorsqu'ils dépendent de bibliothèques ou d'autres scripts.

Tout code associé à jQuery doit être inclus après jQuery.js ... ce qui signifie que les plug-ins et tout code écrit utilisant jQuery. De même, tout code que vous écrivez qui utilise un plugin doit avoir le plugin chargé avant votre code

Changez simplement l'ordre pour que jQuery.js se charge avant dataTables.js 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" charset="utf8" src="/js/jquery.dataTables.js"></script>

Assurez-vous également de ne jamais inclure jQuery qu'une seule fois dans une page ... pas une seule fois par plugin, comme certains le font parfois.

11
charlietfl

En effet, vous chargez la bibliothèque jQuery avant celle de jQuery. jQuery doit être chargé avant de charger la bibliothèque, vous pouvez le faire en incluant le <script> pour jQuery avant votre bibliothèque:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" charset="utf8" src="/js/jquery.dataTables.js"></script>
1
Spencer Wieczorek