86 votes

jQuery $.cookie n'est pas une fonction

J'essaie de définir un cookie en utilisant jQuery :

$.cookie("testCookie", "hello");
alert($.cookie("testCookie"));

Mais lorsque je charge ma page, je reçois l'erreur "$.cookie is not a function". Voici ce que je sais :

  • J'ai téléchargé le plugin jQuery cookie. aquí .
  • Je fais un lien vers jQuery et ensuite vers le plugin cookie.
  • jQuery et jQuery.cookie se chargent correctement avec 200 OK.

J'ai examiné plusieurs autres réponses ( aquí y aquí entre autres), à laquelle la plupart des gens ont suggéré de renommer le fichier cookie.js. J'ai renommé mon fichier cookie "jquery.cookeee.js" mais les résultats sont les mêmes.

Une idée de ce qui se passe ici ?

Si cela peut vous aider, je suis en train de créer une application web en MVC 4.

133voto

ElliotSchmelliot Points 3868

Voici tous les problèmes/solutions possibles que j'ai rencontrés :

1. Téléchargez le plugin cookie

$.cookie n'est pas une fonction standard de jQuery et le plugin doit être téléchargé. aquí . Assurez-vous d'inclure les <script> si nécessaire (voir ci-dessous).

2. Inclure jQuery avant le plugin de cookie

Lorsque vous incluez le script de cookie, veillez à inclure d'abord jQuery, puis le plugin de cookie.

<script src="~/Scripts/jquery-2.0.3.js" type="text/javascript"></script>
<script src="~/Scripts/jquery_cookie.js" type="text/javascript"></script>

3. Ne pas inclure jQuery plus d'une fois

C'était mon problème. Assurez-vous que vous n'incluez pas jQuery plus d'une fois. Si vous le faites, il est possible que :

  1. jQuery se charge correctement.
  2. Le plugin cookie se charge correctement.
  3. Votre deuxième inclusion de jQuery écrase la première et détruit le plugin de cookie.

Pour tous ceux qui utilisent des projets ASP.Net MVC, faites attention aux inclusions par défaut du bundle javascript. Ma deuxième inclusion de jQuery se trouvait dans une de mes pages de mise en page globale, sous la ligne @Scripts.Render("~/bundles/jquery") .

4. Renommez le fichier du plugin pour ne pas inclure ".cookie".

Dans de rares cas, le fait de renommer le fichier en quelque chose qui ne comprend PAS ".cookie" a permis de résoudre cette erreur, apparemment due à des problèmes de serveur web. Par défaut, le script téléchargé est intitulé "jquery.cookie.js" mais essayez de le renommer en quelque chose comme "jquery_cookie.js" comme indiqué ci-dessus. Plus de détails sur ce problème sont aquí .

40voto

YPCrumble Points 526

En ancienne version de jQuery Cookie a été déprécié, donc si vous obtenez l'erreur :

$.cookie is not a function

vous devez passer à la version nouvelle version .

L'API de la nouvelle version est également différente : au lieu d'utiliser la fonction

$.cookie("yourCookieName");

vous devez utiliser

Cookies.get("yourCookieName");

27voto

cabs Points 402

Ajoutez ce plugin de cookie pour jquery.

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>

2voto

Tatyana Points 81

Vérifiez que vous avez inclus le script dans l'en-tête et non dans le pied de page. En particulier dans WordPress, celui-ci n'a pas fonctionné :

wp_register_script('cookie', get_template_directory_uri() . '/js/jquery.cookie.js', array(), false, true);

Le dernier paramètre indique l'inclusion du script dans le pied de page et devait être changé en false (par défaut). La façon dont cela a fonctionné :

wp_register_script('cookie', get_template_directory_uri() . '/js/jquery.cookie.js');

2voto

Amit Mishra Points 50

Vous devez d'abord ajouter jquery.cookie.js puis ajoutez votre js ou jQuery là où vous utilisez cette fonction.

Quand le navigateur charge la page web, il charge d'abord ceci jquery.cookie.js et après vous js ou jQuery et maintenant cette fonction est disponible pour utilisation

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X