jQuery $ .cookie不是函数


81

我正在尝试使用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应用程序。


浏览器的控制台中是否有例外?也许您的jQuery版本不适合您的jQuery Cookie插件版本
Ian

2
您是否两次包含jQuery?(很可能是)。否则,您要么使用$ .noConflict(),要么包含另一个覆盖$的.js文件。
凯文B

1
$ .fn.jquery在包含jquery.js之后立即为您提供了什么,以及在代码中发生错误的地方。
凯文B

1
@ElliotSchmelliot是的,因为第二个将完全覆盖第一个,包括所有插件。
凯文B

4
如果您已经找到答案,则可以自己回答。这样可以防止其他人正在研究答案甚至打开问题。
2013年

Answers:


126

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

1.下载Cookie插件

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

2.在Cookie插件之前包含jQuery

当包含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项目的任何人,请小心使用默认的JavaScript捆绑包。我的第二个jQuery包含在该行下的一个全局布局页面中@Scripts.Render("~/bundles/jquery")

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

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


11
我使用的是框架,问题出在jQuery的多重包含上。非常感谢 !!!
jrierab 2015年

它在github上说不再支持该插件,所以我将文件升级到了较新的版本(我认为是2.1.0),但它不起作用,因此您必须使用此答案链接到的旧版本。
Erik Grosskurth

2
对我来说,jQuery被添加了不止一次
Ardalan Shahgholi

感谢您对“多次包含jQuery”的评论。7年后,它解决了一个问题。
Erik Frantz

36

jQuery Cookie的旧版本已被弃用,因此,如果出现错误:

$.cookie is not a function

您应该升级到新版本

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

$.cookie("yourCookieName");

你应该使用

Cookies.get("yourCookieName");

2
我将我的jquery升级到3.3.1.js。但是它不能正常工作。在我更改的同一行上生成了“未捕获的ReferenceError:未定义Cookies”。有没有人和我一样?
jong-hyeon-yeo

25

为jQuery添加此cookie插件。

<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加载到头部下面的jquery中,导致$(document).ready beeing在cookie之前被处理插件可以完成加载。

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


0

解决jQuery $ .cookie不是此函数的问题解决jquery cdn更新中的此问题

 <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
写这篇文章时你在哪里喝醉?这些词根本不按此顺序排列。
谢恩(Shayne)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.