2013-08-02 86 views
49

我想设置使用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 Web应用程序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” 已经修复了这个错误,显然是由于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寻求帮助。

+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); 

最后一个参数指示脚本包括脚本,需要更改为false(默认)。它的工作方式:

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

为jquery添加此cookie插件。

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

它只在我的wordpress主题中的'wp_head()'函数后添加了脚本后才起作用。 – Rishabh

13

jQuery的cookie的old version已被弃用,因此,如果你得到的错误:

$.cookie is not a function 

你应该升级到new version

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

$.cookie("yourCookieName"); 

你应该使用

Cookies.get("yourCookieName"); 
+0

我将我的jquery升级到3.3.1.js.但它不能正常工作。 '未捕获的引用错误:Cookie未定义'在我更改的同一行上生成。有没有人和我一样? –

2

您应该添加第一jquery.cookie.js然后添加您的JS或jQuery的你在哪里使用功能。

当浏览器加载网页第一次加载此jquery.cookie.js,然后你的js或jQuery和现在经过该功能可供使用

0

我有这个问题为好。我发现有一个$(document).ready函数,其中包含一个$ .cookie在体内的脚本标记中,同时使cookie js加载到头部,如预期的那样,导致$(document).ready在cookie之前被处理插件可以完成加载。

我感动体内的cookie的插件加载脚本中的$(文件)。就绪脚本之前和错误消失:d

相关问题