jQuery $ .cookie non è una funzione

Sto cercando di impostare un cookie usando jQuery:

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

Ma quando carico la mia pagina, ricevo l’errore “$ .cookie non è una funzione”. Ecco quello che so:

  • Ho scaricato il plugin per i cookie jQuery qui .
  • Sto collegando a jQuery e ALLORA il plugin del cookie.
  • Sia jQuery che jQuery.cookie si caricano correttamente con 200 OK.

Ho esaminato diverse altre risposte ( qui e qui tra l’altro), a cui molte persone hanno suggerito di rinominare il file cookie.js. Ho rinominato il mio file cookie “jquery.cookeee.js” ma i risultati sono gli stessi.

Qualche idea su cosa sta succedendo qui?

Se aiuta, sto creando un’applicazione web in MVC 4.

Se qualcun altro si imbatte in $.cookie is not a function problema di $.cookie is not a function , qui ci sono tutti i possibili problemi / soluzioni che ho incontrato:

  • Il plug-in dei cookie non è stato scaricato. $.cookie non è una funzione jQuery standard e il plugin deve essere scaricato qui . Assicurati di includere il tag appropriato, se necessario (vedi successivo).
  • Quando includi lo script cookie, assicurati di includere jQuery FIRST, quindi il plugin cookie.

cioè la tua testa potrebbe contenere:

  

e poi

  
  • In alcuni casi, rinominare il file in qualcosa che NON include ".cookie" ha corretto questo errore, apparentemente a causa di problemi del server web. Per impostazione predefinita, lo script scaricato è intitolato "jquery.cookie.js", ma prova a rinominarlo come "jquery_cookie.js" come mostrato sopra. Maggiori dettagli su questo problema sono qui .
  • Infine (questo era il mio problema), assicurati di non includere jQuery più di una volta. Se lo sei, è ansible che 1. jQuery si carichi correttamente 2. Il plugin del cookie viene caricato correttamente 3. Infine la tua seconda inclusione di jQuery sovrascrive il primo e distrugge il plugin del cookie.

Per chiunque utilizzi progetti ASP.Net MVC, fai attenzione con le inclusioni di pacchetti javascript predefinite; a volte possono essere difficili da trovare. La mia seconda inclusione di jQuery era all'interno di una delle mie pagine di layout globali sotto la linea @Scripts.Render("~/bundles/jquery") . Personalmente preferisco non rendere i bundle e solo il collegamento a JavaScript, se necessario.

Saluti e ringraziamenti speciali a Kevin B per l'aiuto su questo.

La vecchia versione di jQuery Cookie è stata deprecata, quindi se ricevi l’errore:

 $.cookie is not a function 

dovresti passare alla nuova versione .

Anche l’API per la nuova versione è diversa, anziché utilizzare

 $.cookie("yourCookieName"); 

dovresti usare

 Cookies.get("yourCookieName"); 

aggiungi questo plugin per jquery.

  

Verifica di aver incluso lo script nell’intestazione e non nel piè di pagina della pagina. In particolare in WordPress questo non ha funzionato:

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

L’ultimo parametro indica l’inclusione dello script nel piè di pagina e deve essere modificato in falso (predefinito). Il modo in cui ha funzionato:

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

Dovresti aggiungere prima jquery.cookie.js poi aggiungere js o jQuery dove stai usando quella funzione.

Quando il browser carica prima la pagina Web carica questo jquery.cookie.js e dopo di ciò js o jQuery e ora quella funzione è disponibile per l’uso

Ho avuto anche questo problema. Ho scoperto che avendo una funzione $ (documento) .ready che includeva un $ .cookie in un tag script all’interno del corpo mentre si caricava cookie js nella testa QUI di sotto jquery come previsto risultasse in $ (documento). Già in elaborazione prima del cookie il plugin potrebbe terminare il caricamento.

Ho spostato lo script di caricamento del plugin del cookie nel corpo prima dello script $ (document) .ready e l’errore è scomparso: D