2013-08-02 3 views
49

Я пытаюсь установить куки с помощью JQuery:

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

Но когда я загружаю мою страницу, я получаю сообщение об ошибке «$ .cookie не является функцией». Вот что я знаю:

  • Я загрузил плагин jQuery cookie here.
  • Я связываюсь с jQuery и THEN плагин для печенья.
  • И jQuery, и jQuery.cookie загружаются правильно с 200 OK.

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

Любые идеи о том, что здесь происходит?

Если это поможет, я создаю веб-приложение в MVC 4.

+0

Есть исключения в консоли браузера? Возможно, ваша версия jQuery не подходит для вашей версии плагина jQuery cookie. – Ian

+2

Вы включаете jQuery дважды? (скорее всего, да). В противном случае вы либо используете $ .noConflict(), либо включаете другой .js-файл, который переопределяет $. –

+0

Просто «$ .cookie - это не функция». Ничего больше. – ElliotSchmelliot

ответ

92

Если кто-то натыкается на $.cookie is not a function проблемы, здесь всевозможные проблемы/решения Я сталкивался:

  • Плагин cookie не был загружен. $.cookie не является стандартной функцией jQuery, и плагин необходимо загрузить here. Обязательно включите соответствующий тег <script> (см. Следующий).
  • Включая скрипт 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> 
  • В некоторых случаях, переименовав файл на то, что не включает в себя ".cookie" зафиксировала это ошибка, по-видимому, из-за проблем с веб-сервером. По умолчанию загруженный сценарий называется «jquery.cookie.js», но попробуйте переименовать его в нечто вроде «jquery_cookie.js», как показано выше. Более подробная информация по этой проблеме: here.
  • Наконец-то (это была моя проблема), убедитесь, что вы не включаете jQuery более одного раза. Если это так, возможно, что 1. jQuery правильно загружается 2. Плагин cookie загружается правильно 3. Наконец, ваше второе включение jQuery перезаписывает первое и уничтожает плагин cookie.

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

Приветствия и особая благодарность Kevin B за помощь в этом вопросе.

+10

Я использовал фреймворк, и проблема заключалась в многократном включении jQuery. Большое спасибо !!! – jrierab

+0

В github говорится, что подключаемый модуль больше не поддерживается, поэтому я обновил файл до более новой версии (думаю, что 2.1.0), и он не работает, поэтому вам нужно использовать старую версию, на которую ссылается этот ответ. –

+1

Для меня jQuery был добавлен не один раз –

1

Убедитесь, что вы включили скрипт в заголовок, а не в нижний колонтитул страницы.В частности, в WordPress это один не работает:

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

Последний параметр указывает, в том числе сценарий в сноске и необходимо изменить в ложном (по умолчанию). Как это работает:

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

Добавить этот файл cookie для jquery.

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

Он работал только тогда, когда я добавлял вам данный скрипт после функции 'wp_head()' в моей теме wordpress. – Rishabh

13

old version из JQuery Cookie устарела, так что если вы получаете сообщение об ошибке:

$.cookie is not a function 

вы должны перейти на new version.

API-интерфейс для новой версии также отличается - скорее, чем при использовании

$.cookie("yourCookieName"); 

вы должны использовать

Cookies.get("yourCookieName"); 
+0

Я обновляю свой jquery до 3.3.1.js. Но это не работает должным образом. «Неподготовлено ReferenceError: Cookies не определено» генерируется в той же строке, которую я изменил. Кто-нибудь такой же со мной? –

2

Вы должны добавить первую jquery.cookie.js затем добавьте JS или JQuery, где вы используете что функция.

Когда браузер загружает веб-страницы сначала загружает эту jquery.cookie.js и после того, как вы тогда JS или JQuery и теперь эта функция доступна для использования

0

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

Я переместил плагин сценарий загрузки печенья в организме до $ (документ) .ready сценария и исчезла ошибка: D

Смежные вопросы