jQuery $ .cookie不是一个函数

问题描述 投票:65回答:7

我正在尝试使用jQuery设置cookie:

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

但是当我加载页面时,我收到错误“$ .cookie不是函数”。这就是我所知道的:

  • 我已经下载了jQuery cookie插件here
  • 我链接到jQuery和那个cookie插件。
  • jQuery和jQuery.cookie都正确加载200 OK。

我已经看了几个其他答案(herehere等),大多数人建议重命名cookie.js文件。我已将我的cookie文件重命名为“jquery.cookeee.js”,但结果是一样的。

关于这里发生了什么的任何想法?

如果它有帮助,我在MVC 4中创建一个Web应用程序。

javascript jquery asp.net-mvc cookies
7个回答
112
投票

如果有其他人偶然发现$.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”的文件已修复此错误,显然是由于Web服务器问题。默认情况下,下载的脚本标题为“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对此的帮助。


25
投票

jQuery Cookie的old version已被弃用,因此如果您收到错误消息:

$.cookie is not a function

你应该升级到new version

新版本的API也不同 - 而不是使用

$.cookie("yourCookieName");

你应该使用

Cookies.get("yourCookieName");

19
投票

为jquery添加这个cookie插件。

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

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,现在该功能可以使用


1
投票

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

0
投票

我也有这个问题。我发现有一个$(document).ready函数,其中包含一个$ .cookie在一个脚本标记内部,同时在头部BELOW jquery中加载cookie js导致$(文件).ready在cookie之前处理插件可以完成加载。

我在$(document).ready脚本之前移动了cookie插件加载脚本,错误消失了:D

© www.soinside.com 2019 - 2024. All rights reserved.