it-swarm.com.de

jQuery $ .cookie ist keine Funktion

Ich versuche, einen Cookie mit jQuery zu setzen:

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

Beim Laden meiner Seite erhalte ich die Fehlermeldung "$ .cookie ist keine Funktion". Folgendes weiß ich:

  • Ich habe das jQuery-Cookie-Plugin hier heruntergeladen.
  • Ich verlinke auf jQuery und dann das Cookie-Plugin. 
  • Sowohl jQuery als auch jQuery.cookie werden mit 200 OKs ordnungsgemäß geladen.

Ich habe mir einige andere Antworten angeschaut ( hier und hier ua), 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 die gleichen.

Irgendwelche Ideen, was hier los ist?

Wenn es hilft, erstelle ich eine Webanwendung in MVC 4.

60

Wenn jemand anderes auf das $.cookie is not a function-Problem stößt, sind hier alle möglichen Probleme/Lösungen, auf die ich gestoßen bin:

  • Das Cookie-Plugin wurde nicht heruntergeladen. $.cookie ist keine Standard-jQuery-Funktion und das Plugin muss here heruntergeladen werden. Stellen Sie sicher, dass Sie gegebenenfalls den entsprechenden <script>-Tag angeben (siehe nächste Seite).
  • Wenn Sie das Cookie-Skript hinzufügen, stellen Sie sicher, dass Sie jQuery FIRST und dann das Cookie-Plugin einschließen. 

ihr Kopf könnte enthalten:

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

und dann

<script src="~/Scripts/jquery_cookie.js" type="text/javascript"></script>
  • In einigen Fällen wurde durch das Umbenennen der Datei in etwas, das NICHT ".cookie" enthält, dieser Fehler behoben, der offensichtlich auf Webserver-Problemen zurückzuführen ist. Standardmäßig trägt das heruntergeladene Skript den Namen "jquery.cookie.js". Benennen Sie es jedoch wie oben gezeigt in "jquery_cookie.js" um. Weitere Details zu diesem Problem sind hier .
  • Als letztes (dies war mein Problem) stellen Sie sicher, dass Sie jQuery nicht mehr als einmal verwenden. Wenn ja, ist es möglich, dass 1. jQuery korrekt geladen wird. 2. Das Cookie-Plugin ordnungsgemäß geladen wird. 3. Zum Schluss überschreibt Ihre zweite Aufnahme von jQuery das erste und zerstört das Cookie-Plugin.

Wenn Sie ASP.Net MVC-Projekte verwenden, sollten Sie mit den Standardeinträgen des JavaScript-Pakets vorsichtig sein. Sie sind manchmal schwer zu finden. Meine zweite Aufnahme von jQuery befand sich auf einer meiner globalen Layout-Seiten unter der Zeile @Scripts.Render("~/bundles/jquery"). Ich persönlich bevorzuge es nicht, Bundles zu rendern und bei Bedarf nur zu Javascript zu verlinken.

Prost und besonderen Dank an Kevin B für die Hilfe zu diesem Thema.

104

Die alte Version von jQuery-Cookie ist veraltet, wenn Sie also den Fehler erhalten:

$.cookie is not a function

sie sollten ein Upgrade auf die neue Version durchführen.

Die API für die neue Version ist auch anders - anstatt zu verwenden

$.cookie("yourCookieName");

du solltest benutzen

Cookies.get("yourCookieName");
23
YPCrumble

fügen Sie 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>
18
cabs

Stellen Sie sicher, dass Sie das Skript in der Kopfzeile und nicht in der Fußzeile der Seite enthalten. Besonders in WordPress hat dieses 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 der Fußzeile enthalten ist und in false geändert werden muss (Standardeinstellung). Wie es funktioniert hat:

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

Fügen Sie zuerst jquery.cookie.js hinzu und fügen Sie dann Ihre js oder jQuery dort hinzu, wo Sie diese Funktion verwenden. 

Wenn der Browser die Webseite zuerst lädt, lädt er diesen jquery.cookie.js und danach js oder jQuery, und jetzt steht diese Funktion zur Verfügung

2
Sanjeev Mishra

JQuery lösen $ .cookie ist keine Funktion für dieses Problem jquery cdn update in lösen 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>

Ich hatte auch dieses Problem. Ich habe herausgefunden, dass eine $ (document) .ready-Funktion, die einen $ .cookie in einem Skript-Tag in body enthält, während das Cookie js im Kopf UNTEN wie unten angegeben, dazu geführt hat, dass $ (document) .ready vor dem Cookie verarbeitet wurde Plugin konnte das Laden beenden.

Ich habe das Skript zum Laden des Cookie-Plugins vor dem $ (document) .ready-Skript in den Body verschoben und der Fehler ist verschwunden: D

0