jQuery $ .cookie не є функцією


82

Я намагаюся встановити файл cookie за допомогою jQuery:

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

Але коли я завантажую свою сторінку, я отримую повідомлення про помилку "$ .cookie не є функцією". Ось що я знаю:

  • Я завантажив тут плагін cookie jQuery .
  • Я посилаюся на jQuery і ПОТІМ плагін cookie.
  • Як jQuery, так і jQuery.cookie завантажуються правильно з 200 ОК.

Я розглянув кілька інших відповідей ( тут і тут, серед інших), на які більшість людей пропонували перейменувати файл cookie.js. Я перейменував свій файл cookie в "jquery.cookeee.js", але результати однакові.

Будь-які ідеї щодо того, що тут відбувається?

Якщо це допомагає, я створюю веб-додаток у MVC 4.


Якісь винятки у консолі браузера? Можливо, ваша версія jQuery не підходить для вашої версії плагіна cookie jQuery
Ян

2
Ви двічі включаєте jQuery? (швидше за все, так). В іншому випадку ви або використовуєте $ .noConflict (), або ви включаєте інший файл .js, який замінює $.
Kevin B

1
Що дає $ .fn.jquery як відразу після включення jquery.js, так і у ваш код, де виникає помилка.
Kevin B

1
@ElliotSchmelliot Так, оскільки другий повністю замінить перший, включаючи всі плагіни.
Kevin B

4
Якщо ви вже знайшли відповідь, можете відповісти самі. Це запобігає тому, що інші працюють над відповіддю або навіть відкривають питання.
серфінг

Відповіді:


127

Ось усі можливі проблеми / рішення, з якими я стикався:

1. Завантажте плагін cookie

$.cookieне є стандартною функцією jQuery, і плагін потрібно завантажити тут . Обов’язково додайте відповідний <script>тег, де це необхідно (див. Далі).

2. Включіть jQuery перед плагіном cookie

Включаючи сценарій cookie, переконайтеся, що ви включили jQuery FIRST, а потім плагін cookie.

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

3. Не включайте jQuery більше одного разу

Це була моя проблема. Переконайтеся, що ви не включаєте jQuery більше одного разу. Якщо ви є, можливо, що:

  1. jQuery завантажується правильно.
  2. Плагін cookie завантажується правильно.
  3. Ваше друге включення jQuery замінює перше і руйнує плагін cookie.

Для тих, хто використовує проекти ASP.Net MVC, будьте обережні з включеннями пакетів Java за замовчуванням. Моє друге включення jQuery було на одній із моїх сторінок глобального макету під рядком @Scripts.Render("~/bundles/jquery").

4. Перейменуйте файл плагіна, щоб не містити ".cookie"

У деяких рідкісних випадках перейменування файлу на те, що НЕ включає ".cookie", виправило цю помилку, мабуть, через проблеми з веб-сервером. За замовчуванням завантажений сценарій має назву "jquery.cookie.js", але спробуйте перейменувати його на щось на зразок "jquery_cookie.js", як показано вище. Детальніше про цю проблему тут .


11
Я використовував фреймворк, і проблема полягала в багаторазовому включенні jQuery. Дуже дякую !!!
jrierab

На github сказано, що плагін більше не підтримується, тому я оновив файл до нової версії (2.1.0, на мою думку), і він не працював, тому вам доведеться використовувати стару версію, на яку посилається ця відповідь.
Ерік Гросскурт,

2
Для мене jQuery був доданий не раз
Ардалан Шахголі

Дякуємо за коментар "включаючи jQuery не раз". Це вирішило проблему через 7 років.
Ерік Франц

37

Стара версія з JQuery Cookie застаріла, так що якщо ви отримуєте повідомлення про помилку:

$.cookie is not a function

слід оновити до нової версії .

API для нової версії також відрізняється - замість використання

$.cookie("yourCookieName");

ви повинні використовувати

Cookies.get("yourCookieName");

2
Я оновлюю свій jquery до 3.3.1.js. Але це не працює належним чином. Помилка Uncaught ReferenceError: Cookies не визначено генерується в тому самому рядку, який я змінив. Хтось зі мною такий самий?
jong-hyeon-yeo

25

додати цей плагін cookie для jquery.

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

Це спрацювало лише тоді, коли я додав вам заданий сценарій після wp_head()функції в моїй темі WordPress.
Рішабх,

Все, що мені потрібно було просто посилання на файл, і це добре виконало роботу. Не потрібно було все це встановлення npm.
Дейв

2

Переконайтеся, що ви включили сценарій у верхній колонтитул, а не в нижній колонтитул сторінки. Зокрема в WordPress це не працювало:

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

Останній параметр вказує включення сценарію в нижній колонтитул і його потрібно змінити на false (за замовчуванням). Як це працювало:

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

2

Спочатку слід додати, jquery.cookie.jsа потім додати свій js або jQuery там, де ви використовуєте цю функцію.

Коли браузер спочатку завантажує веб-сторінку, він завантажує це, jquery.cookie.jsа потім ви використовуєте js або jQuery і тепер ця функція доступна


0

У мене була така проблема. Я виявив, що наявність функції $ (document) .ready, яка включала $ .cookie у тег скрипта всередині тіла, маючи завантаження файлів cookie js у голові BELOW jquery, як передбачалося, призвело до того, що файл $ (document). Вже був оброблений перед файлом cookie плагін може завершити завантаження.

Я перемістив скрипт завантаження плагіна cookie в тілі перед скриптом $ (document) .ready і помилка зникла: D


0

Вирішити jQuery $ .cookie не є функцією, яку ця проблема оновила cdn jquery для вирішення цієї проблеми

 <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
Де ви пили, коли писали це? Ці слова взагалі не йдуть у такому порядку.
Шейн,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.