jQuery $.cookie is geen functie

Ik probeer een cookie in te stellen met jQuery:

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

Maar wanneer ik mijn pagina laad, krijg ik de foutmelding “$.cookie is geen functie”. Dit is wat ik weet:

  • Ik heb de jQuery-cookie-plug-in hiergedownload.
  • Ik link naar jQuery en DAARNA de cookie-plug-in.
  • Zowel jQuery als jQuery.cookie worden correct geladen met 200 OK’s.

Ik heb verschillende andere antwoorden bekeken (hieren hieronder andere), waarnaar de meeste mensen voorstelden om het bestand cookie.js te hernoemen. Ik heb mijn cookiebestand hernoemd naar “jquery.cookeee.js”, maar de resultaten zijn hetzelfde.

Enig idee wat hier aan de hand is?

Als het helpt, ben ik een webtoepassing aan het maken in MVC 4.


Antwoord 1, autoriteit 100%

Hier zijn alle mogelijke problemen/oplossingen die ik ben tegengekomen:

1. Download de cookie-plug-in

$.cookieis geen standaard jQuery-functie en de plug-in moet worden gedownload hier. Zorg ervoor dat u waar nodig de juiste <script>-tag opneemt (zie volgende).

2. Voeg jQuery toe vóór de cookie-plug-in

Als u het cookiescript opneemt, zorg er dan voor dat u eerst jQuery opneemt en daarna de cookie-plug-in.

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

3. Neem jQuery niet meer dan één keer op

Dit was mijn probleem. Zorg ervoor dat u jQuery niet meer dan één keer opneemt. Als dat zo is, is het mogelijk dat:

  1. jQuery wordt correct geladen.
  2. De cookie-plug-in laadt correct.
  3. Uw tweede toevoeging van jQuery overschrijft de eerste en vernietigt de cookie-plug-in.

Iedereen die ASP.Net MVC-projecten gebruikt, wees voorzichtig met de standaard invoegingen van javascript-bundels. Mijn tweede opname van jQuery was binnen een van mijn globale lay-outpagina’s onder de regel @Scripts.Render("~/bundles/jquery").

4. Hernoem het plug-inbestand zodat het geen “.cookie” bevat

In enkele zeldzame gevallen heeft het hernoemen van het bestand naar iets dat GEEN “.cookie” bevat deze fout verholpen, blijkbaar vanwege problemen met de webserver. Standaard is het gedownloade script getiteld “jquery.cookie.js”, maar probeer het te hernoemen naar iets als “jquery_cookie.js”, zoals hierboven weergegeven. Meer details over dit probleem vindt u hier.


Antwoord 2, autoriteit 30%

De oude versievan jQuery Cookie is verouderd, dus als je de foutmelding krijgt:

$.cookie is not a function

u moet upgraden naar de nieuwe versie.

De API voor de nieuwe versie is ook anders – in plaats van te gebruiken

$.cookie("yourCookieName");

je zou moeten gebruiken

Cookies.get("yourCookieName");

Antwoord 3, autoriteit 20%

voeg deze cookie-plug-in toe voor jQuery.

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

Antwoord 4, autoriteit 2%

Controleer of je het script in de koptekst hebt opgenomen en niet in de voettekst van de pagina. Vooral in WordPress werkte deze niet:

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

De laatste parameter geeft aan dat het script in de voettekst moet worden opgenomen en moet worden gewijzigd in false (standaard). De manier waarop het werkte:

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

Antwoord 5, autoriteit 2%

U moet eerst jquery.cookie.jstoevoegen en vervolgens uw js of jQuery toevoegen waar u die functie gebruikt.

Als de browser de webpagina eerst laadt, wordt deze jquery.cookie.jsgeladen en daarna js of jQuery en nu is die functie beschikbaar voor gebruik


Antwoord 6

Ik had dit probleem ook. Ik kwam erachter dat het hebben van een $(document).ready-functie die een $.cookie in een scripttag in de body bevatte terwijl cookie js in de kop werd geladen ONDER jquery zoals bedoeld, resulteerde in $(document).ready beeing vóór de cookie plug-in kan klaar zijn met laden.

Ik heb het load-script van de cookie-plug-in naar de body verplaatst vóór het $(document).ready-script en de fout is verdwenen 😀


Antwoord 7

Los jQuery $.cookie op is geen functie van dit probleem
jquery cdn-update om dit probleem op te lossen

<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>

Other episodes