84

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

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

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

  • 我在这里下载了 jQuery cookie 插件。
  • 我正在链接到 jQuery,然后是 cookie 插件。
  • jQuery 和 jQuery.cookie 都正确加载了 200 次 OK。

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

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

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

4

7 回答 7

131

以下是我遇到的所有可能的问题/解决方案:

1.下载cookie插件

$.cookie不是一个标准的jQuery函数,插件需要在这里下载。确保<script>在必要时包含适当的标签(见下文)。

2.在cookie插件之前包含jQuery

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

3. 不要多次包含 jQuery

这是我的问题。确保您没有多次包含 jQuery。如果是,则有可能:

  1. jQuery 正确加载。
  2. cookie 插件正确加载。
  3. 您第二个包含的 jQuery 会覆盖第一个并破坏 cookie 插件。

对于使用 ASP.Net MVC 项目的任何人,请注意默认的 javascript 包包含。我第二次包含 jQuery 是在我的全局布局页面之一中@Scripts.Render("~/bundles/jquery")

4.重命名插件文件不包含“.cookie”

在极少数情况下,将文件重命名为不包含“.cookie”的内容已修复此错误,这显然是由于 Web 服务器问题。默认情况下,下载的脚本标题为“jquery.cookie.js”,但请尝试将其重命名为“jquery_cookie.js”,如上所示。关于这个问题的更多细节在这里

于 2013-08-05T18:24:18.180 回答
40

版本的 jQuery Cookie 已被弃用,所以如果您收到错误:

$.cookie is not a function

你应该升级到新版本

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

$.cookie("yourCookieName");

你应该使用

Cookies.get("yourCookieName");
于 2016-07-20T23:44:14.140 回答
27

为 jquery 添加这个 cookie 插件。

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
于 2016-05-06T05:15:47.483 回答
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');
于 2015-08-13T10:41:31.200 回答
2

您应该先添加jquery.cookie.js,然后在使用该功能的地方添加您的 js 或 jQuery。

当浏览器首先加载网页时,它会加载这个jquery.cookie.js,然后是 js 或 jQuery,现在该函数可以使用了

于 2016-10-21T05:00:58.417 回答
0

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

我将 cookie 插件加载脚本移到 $(document).ready 脚本之前的正文中,错误消失了:D

于 2018-01-24T08:54:21.913 回答
0

解决 jQuery $.cookie is not a function this Problem jquery cdn update in 解决这个问题

 <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>
于 2018-09-18T07:38:21.570 回答