jQuery $.cookie-это не функция


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

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

но когда я загружаю свою страницу, Я получаю сообщение об ошибке"$.cookie-это не функция". Вот что я знаю:

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

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

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

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

7 55

7 ответов:

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

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

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

ура и особая благодарность Кевин Б за помощь в этом деле.

The старая версия из jQuery Cookie был устаревшим, так что если вы получаете сообщение об ошибке:

$.cookie is not a function

вы должны перейти на новая версия.

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

$.cookie("yourCookieName");

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

Cookies.get("yourCookieName");

добавить этот плагин cookie для jquery.

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

убедитесь, что вы включили скрипт в верхний колонтитул, а не в нижний колонтитул страницы. Особенно в 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');

вы должны добавить jquery.cookie.js затем добавьте js или jQuery, где вы используете эту функцию.

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

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

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

решить jQuery $.cookie не является функцией этой проблемы jQuery cdn update в решить эту проблему

 <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>