jQuery $ .cookie ist keine Funktion


81

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.


Gibt es Ausnahmen in der Konsole Ihres Browsers? Vielleicht ist Ihre Version von jQuery nicht für Ihre Version von jQuery Cookie Plugin geeignet
Ian

2
Schließen Sie jQuery zweimal ein? (sehr wahrscheinlich ja). Andernfalls verwenden Sie entweder $ .noConflict () oder Sie fügen eine andere .js-Datei hinzu, die $ überschreibt.
Kevin B

1
Was gibt Ihnen $ .fn.jquery sowohl unmittelbar nach dem Einfügen von jquery.js als auch in Ihren Code, in dem der Fehler auftritt?
Kevin B

1
@ElliotSchmelliot Ja, da der zweite den ersten vollständig überschreibt, einschließlich aller Plugins.
Kevin B

4
Wenn Sie die Antwort bereits gefunden haben, können Sie sie selbst beantworten. Dies verhindert, dass andere an einer Antwort arbeiten oder die Frage sogar öffnen.
Surfmuggle

Antworten:


126

Hier sind alle möglichen Probleme / Lösungen, auf die ich gestoßen bin:

1. Laden Sie das Cookie-Plugin herunter

$.cookieist 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:

  1. jQuery wird korrekt geladen.
  2. Das Cookie-Plugin wird korrekt geladen.
  3. Ihre zweite Aufnahme von jQuery überschreibt die erste und zerstört das Cookie-Plugin.

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 .


11
Ich habe ein Framework verwendet und das Problem war die mehrfache Einbeziehung von jQuery. Danke vielmals !!!
Jrierab

Auf github heißt es, dass das Plug-in nicht mehr unterstützt wurde, daher habe ich die Datei auf die neuere Version (2.1.0, glaube ich) aktualisiert und es hat nicht funktioniert, sodass Sie die alte Version verwenden müssen, auf die diese Antwort verweist.
Erik Grosskurth

2
Für mich wurde jQuery mehr als einmal hinzugefügt
Ardalan Shahgholi

Vielen Dank für den Kommentar "jQuery mehr als einmal einschließen". Es löste ein Problem 7 Jahre später.
Erik Frantz

36

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");

2
Ich aktualisiere meine jquery auf 3.3.1.js. Aber es funktioniert nicht richtig. "Nicht erfasster Referenzfehler: Cookies sind nicht definiert" wird in derselben Zeile generiert, die ich geändert habe. Ist jemand mit mir gleich?
Jong-Hyeon-Yeo

25

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>

Es hat nur funktioniert, wenn ich Ihnen ein Skript nach der wp_head()Funktion in meinem WordPress-Theme hinzufüge .
Rishabh

Alles was ich brauchte war ein einfacher Link zu einer Datei und dies erledigte den Job gut. Ich brauchte nicht die ganze npm-Installation.
Dave

2

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');

2

Sie sollten zuerst hinzufügen und jquery.cookie.jsdann 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.jsund danach js oder jQuery und jetzt steht diese Funktion zur Verfügung


0

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.


0

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>

3
Wo hast du getrunken, als du das geschrieben hast? Diese Worte gehen überhaupt nicht in diese Reihenfolge.
Shayne
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.