2013-08-02 16 views
49

Sto cercando di impostare un cookie utilizzando 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 plug-in jQuery cookie here.
  • Sto collegando a jQuery e ALLORA il plugin del cookie.
  • Sia jQuery che jQuery.cookie si stanno caricando correttamente con 200 OK.

Ho guardato diverse altre risposte (here e here tra gli altri), al quale la maggior parte delle 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.

+0

Eventuali deroghe a console del browser? Forse la tua versione di jQuery non è adatta alla tua versione del plugin jQuery cookie – Ian

+2

Stai includendo jQuery due volte? (molto probabilmente sì). Altrimenti, stai utilizzando $ .noConflict() oppure includi un altro file .js che sovrascrive $. –

+0

Solo "$ .cookie non è una funzione". Nient'altro. – ElliotSchmelliot

risposta

92

se qualcun altro si imbatte il problema $.cookie is not a function, qui 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 plug-in deve essere scaricato here. Assicurati di includere il tag <script> appropriato, se necessario (vedi successivo).
  • Quando si include lo script cookie, assicurarsi di includere jQuery FIRST, quindi il plugin cookie.

vale a dire la vostra testa potrebbe contenere:

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

e POI

<script src="~/Scripts/jquery_cookie.js" type="text/javascript"></script> 
  • In alcuni casi, rinominare il file in qualcosa che non include ".cookie" ha fissato 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 here.
  • Infine (questo era il mio problema), assicurati di non includere jQuery più di una volta. Se lo sei, è possibile 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, fare 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.

+10

Stavo usando un framework e il problema era con l'inclusione multipla di jQuery. Grazie molto !!! – jrierab

+0

Dice su github che il plug-in non era più supportato, quindi ho aggiornato il file alla versione più recente (2.1.0 penso) e non ha funzionato, quindi devi usare la vecchia versione a cui questa risposta si collega. –

+1

Per me jQuery è stato aggiunto più di una volta –

1

Verificare 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 tra cui lo script in piè di pagina e aveva bisogno di essere cambiato a false (default). Il modo in cui ha funzionato:

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

aggiungere questo plugin cookie per jquery.

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

Ha funzionato solo quando aggiungo lo script dato dopo la funzione 'wp_head()' nel mio tema wordpress. – Rishabh

13

La old version di jQuery cookie è stato deprecato, quindi se stai ricevendo l'errore:

$.cookie is not a function 

si dovrebbe eseguire l'aggiornamento alla new version.

L'API per la nuova versione è anche diverso - invece di usare

$.cookie("yourCookieName"); 

si dovrebbe usare

Cookies.get("yourCookieName"); 
+0

Aggiorno il mio jquery a 3.3.1.js. Ma non funziona correttamente. 'Uncaught ReferenceError: I cookie non sono definiti' viene generato sulla stessa riga che ho modificato. C'è qualcuno uguale a me? –

2

Si dovrebbe aggiungere prima jquery.cookie.js poi aggiungere i js o jQuery in cui si utilizza tale funzione.

Quando il browser carica la pagina web prima carica questo jquery.cookie.js e dopo allora si js o jQuery e ora che la funzione è disponibile per l'uso

0

ho avuto questo problema pure. 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 plugin di biscotto nel corpo prima che il $ (document) di script .ready e l'errore è scomparso: D

Problemi correlati