web-dev-qa-db-fra.com

jQuery $ .cookie n'est pas une fonction

J'essaie de définir un cookie à l'aide de jQuery:

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

Mais lorsque je charge ma page, je reçois l’erreur "$ .cookie n’est pas une fonction". Voici ce que je sais:

  • J'ai téléchargé le plugin jQuery cookie ici .
  • Je me connecte à jQuery et ensuite au plugin cookie. 
  • JQuery et jQuery.cookie se chargent correctement avec 200 OK.

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

Des idées sur ce qui se passe ici?

Si cela peut aider, je crée une application Web dans MVC 4.

60
ElliotSchmelliot

Si quelqu'un d'autre tombe sur le problème $.cookie is not a function, voici tous les problèmes/solutions possibles que j'ai rencontrés:

  • Le plugin cookie n'a pas été téléchargé. $.cookie n'est pas une fonction jQuery standard et le plugin doit être téléchargé ici . Assurez-vous d'inclure la balise <script> appropriée si nécessaire (voir ci-après).
  • Lorsque vous incluez le script cookie, veillez à inclure jQuery FIRST, puis le plug-in cookie. 

c'est-à-dire que votre tête peut contenir:

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

et alors

<script src="~/Scripts/jquery_cookie.js" type="text/javascript"></script>
  • Dans certains cas, renommer le fichier en quelque chose qui n'inclut PAS ".cookie" a corrigé cette erreur, apparemment en raison de problèmes liés au serveur Web. Par défaut, le script téléchargé s'intitule "jquery.cookie.js", mais essayez de le renommer avec le nom "jquery_cookie.js", comme indiqué ci-dessus. Plus de détails sur ce problème sont ici .
  • Enfin (c'est mon problème), assurez-vous de ne pas inclure jQuery plus d'une fois. Si vous êtes, il est possible que 1. jQuery soit chargé correctement 2. Le plugin cookie se charge correctement 3. Enfin, votre deuxième inclusion de jQuery remplace le premier et détruit le plugin cookie.

Pour toute personne utilisant des projets ASP.Net MVC, soyez prudent avec les inclusions par défaut de l'ensemble javascript; ils peuvent être difficiles à trouver parfois. Ma deuxième inclusion de jQuery se trouvait dans l'une de mes pages de mise en page globale sous la ligne @Scripts.Render("~/bundles/jquery"). Personnellement, je préfère ne pas rendre les bundles et simplement créer des liens vers javascript, au besoin.

Salutations et un merci spécial à Kevin B pour l'aide sur celui-ci.

104
ElliotSchmelliot

La ancienne version de jQuery Cookie est obsolète. Si vous obtenez l'erreur:

$.cookie is not a function

vous devriez passer à la nouvelle version .

L’API de la nouvelle version est également différent - plutôt que d’utiliser

$.cookie("yourCookieName");

tu devrais utiliser

Cookies.get("yourCookieName");
23
YPCrumble

ajouter ce plugin cookie pour jQuery. 

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

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 doit être remplacé par false (valeur par défaut). La façon dont cela a fonctionné:

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

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

Lorsque le navigateur charge la page Web en premier, il charge ce jquery.cookie.js et après, js ou jQuery, cette fonction est désormais disponible

2
Sanjeev Mishra

Résoudre jQuery $ .cookie n'est pas une fonction de ce problème jquery cdn update pour résoudre ce problème 

 <script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>
 <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js" integrity="sha256-T0Vest3yCU7pafRw9r+settMBX6JkKN06dqBnpQ8d30=" crossorigin="anonymous"></script>
1

J'ai eu ce problème aussi. J'ai découvert que le fait d'avoir une fonction $ (document) .ready qui incluait un $ .cookie dans une balise de script à l'intérieur du corps tout en ayant le cookie chargé dans la tête AU-DESSOUS jQuery comme prévu entraînait le traitement de $ (document) .ready avant le cookie plugin pourrait finir le chargement.

J'ai déplacé le script de chargement du plugin cookie dans le corps avant le script $ (document) .ready et l'erreur a disparu: D

0
Kostas Tsakalidis