Ich versuche, mit jQuery ein Cookie zu setzen:
$.cookie("testCookie", "hello");
alert($.cookie("testCookie"));
Aber wenn ich meine Seite lade, erhalte ich die Fehlermeldung "$ .cookie ist keine Funktion". Folgendes weiß ich:
- Ich habe das jQuery-Cookie-Plugin hier heruntergeladen .
- Ich verlinke zu jQuery und dann zum Cookie-Plugin.
- Sowohl jQuery als auch jQuery.cookie werden mit 200 OKs korrekt geladen.
Ich habe mir einige andere Antworten angesehen ( hier und hier unter anderem), auf die die meisten Leute vorgeschlagen haben, die Datei cookie.js umzubenennen. Ich habe meine Cookie-Datei in "jquery.cookeee.js" umbenannt, aber die Ergebnisse sind dieselben.
Irgendwelche Ideen, was hier los ist?
Wenn es hilft, erstelle ich eine Webanwendung in MVC 4.
javascript
jquery
asp.net-mvc
cookies
ElliotSchmelliot
quelle
quelle
Antworten:
Hier sind alle möglichen Probleme / Lösungen, auf die ich gestoßen bin:
1. Laden Sie das Cookie-Plugin herunter
$.cookie
ist keine Standard-jQuery-Funktion und das Plugin muss hier heruntergeladen werden . Stellen Sie sicher, dass Sie<script>
bei Bedarf das entsprechende Tag einfügen (siehe weiter).2. Fügen Sie jQuery vor dem Cookie-Plugin ein
Stellen Sie beim Einfügen des Cookie-Skripts sicher, dass Sie jQuery FIRST und dann das Cookie-Plugin einschließen.
<script src="~/Scripts/jquery-2.0.3.js" type="text/javascript"></script> <script src="~/Scripts/jquery_cookie.js" type="text/javascript"></script>
3. Fügen Sie jQuery nicht mehr als einmal ein
Das war mein Problem. Stellen Sie sicher, dass Sie jQuery nicht mehr als einmal einschließen. Wenn Sie sind, ist es möglich, dass:
Seien Sie bei allen Benutzern von ASP.Net MVC-Projekten vorsichtig mit den Standardeinschlüssen für Javascript-Bundles. Meine zweite Aufnahme von jQuery erfolgte auf einer meiner globalen Layoutseiten unter der Zeile
@Scripts.Render("~/bundles/jquery")
.4. Benennen Sie die Plugin-Datei so um, dass sie nicht ".cookie" enthält.
In einigen seltenen Fällen hat das Umbenennen der Datei in etwas, das NICHT ".cookie" enthält, diesen Fehler behoben, anscheinend aufgrund von Webserverproblemen. Standardmäßig trägt das heruntergeladene Skript den Titel "jquery.cookie.js". Versuchen Sie jedoch, es wie oben gezeigt in "jquery_cookie.js" umzubenennen. Weitere Details zu diesem Problem finden Sie hier .
quelle
Die alte Version von jQuery Cookie ist veraltet. Wenn Sie also den Fehler erhalten:
$.cookie is not a function
Sie sollten auf die neue Version aktualisieren .
Die API für die neue Version unterscheidet sich ebenfalls - anstatt sie zu verwenden
$.cookie("yourCookieName");
du solltest benutzen
Cookies.get("yourCookieName");
quelle
füge dieses Cookie-Plugin für jquery hinzu.
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
quelle
wp_head()
Funktion in meinem WordPress-Theme hinzufüge .Stellen Sie sicher, dass Sie das Skript in die Kopfzeile und nicht in die Fußzeile der Seite aufgenommen haben. Besonders in WordPress hat dies nicht funktioniert:
wp_register_script('cookie', get_template_directory_uri() . '/js/jquery.cookie.js', array(), false, true);
Der letzte Parameter gibt an, dass das Skript in die Fußzeile aufgenommen wurde und in false geändert werden musste (Standard). So hat es funktioniert:
wp_register_script('cookie', get_template_directory_uri() . '/js/jquery.cookie.js');
quelle
Sie sollten zuerst hinzufügen und
jquery.cookie.js
dann Ihr js oder jQuery hinzufügen, wo Sie diese Funktion verwenden.Wenn der Browser zuerst die Webseite lädt, lädt er diese
jquery.cookie.js
und danach js oder jQuery und jetzt steht diese Funktion zur Verfügungquelle
Ich hatte auch dieses Problem. Ich fand heraus, dass eine $ (document) .ready-Funktion, die ein $ .cookie in einem Skript-Tag im Body enthielt, während Cookies js wie beabsichtigt in den Kopf UNTER der jquery geladen wurden, dazu führte, dass $ (document) .ready vor dem Cookie verarbeitet wurde Das Plugin konnte den Ladevorgang beenden.
Ich habe das Ladeskript für das Cookie-Plugin in den Text vor dem Skript $ (document) .ready verschoben und der Fehler ist verschwunden: D.
quelle
Löse jQuery $ .cookie ist keine Funktion dieses Problems. Jquery cdn update in löst dieses Problem
<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>
quelle