jQuery $ .cookie不是一个函数

时间:2013-08-02 19:14:29

标签: javascript jquery asp.net-mvc cookies

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

7 个答案:

答案 0 :(得分:111)

如果有其他人偶然发现$.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寻求帮助。

答案 1 :(得分:24)

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

$.cookie is not a function

您应该升级到new version

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

$.cookie("yourCookieName");

你应该使用

Cookies.get("yourCookieName");

答案 2 :(得分:19)

为jquery添加此cookie插件。

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

答案 3 :(得分: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');

答案 4 :(得分:2)

您应首先添加std::ostream & operator<<(std::ostream & os, const map<string, vector<string>>& myMap) { for(auto elem : myMap) { std::os << it->first << " -> "; auto & vec = it->second; for(int i=0;i<vec.size();i++){ os << vec[i] << " "; } os << "\n"; } os<<"\n"; return os; } ,然后在您使用该功能的地方添加js或jQuery。

当浏览器首先加载该网页时,它会加载此jquery.cookie.js,之后您将使用js或jQuery,现在该功能可供使用

答案 5 :(得分:1)

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

答案 6 :(得分:0)

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

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