jQuery $.cookie is not a function

匿名 (未验证) 提交于 2019-12-03 02:38:01

问题:

I am trying to set a cookie using jQuery:

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

But when I load my page, I receive the error "$.cookie is not a function". Here is what I know:

  • I have downloaded the jQuery cookie plugin here.
  • I am linking to jQuery and THEN the cookie plugin.
  • Both jQuery and jQuery.cookie are loading correctly with 200 OKs.

I have looked at several other answers (here and here among others), to which most people suggested renaming the cookie.js file. I have renamed my cookie file "jquery.cookeee.js" but the results are the same.

Any ideas on what is going on here?

If it helps, I am creating a web application in MVC 4.

回答1:

If anyone else stumbles upon the $.cookie is not a function problem, here are all the possible problems/solutions I have come across:

  • The cookie plugin was not downloaded. $.cookie is not a standard jQuery function and the plugin needs to be downloaded here. Make sure to include the appropriate tag where necessary (see next).
  • When including the cookie script, make sure to include jQuery FIRST, then the cookie plugin.

i.e. your head might contain:

and THEN

  • In some cases, renaming the file to something that does NOT include ".cookie" has fixed this error, apparently due to web server issues. By default, the downloaded script is titled "jquery.cookie.js" but try renaming it to something like "jquery_cookie.js" as shown above. More details on this problem are here.
  • Lastly (this was my problem), make sure you aren't including jQuery more than once. If you are, it is possible that 1. jQuery loads correctly 2. The cookie plugin loads correctly 3. Finally your second inclusion of jQuery overwrites the first and destroys the cookie plugin.

For anyone using ASP.Net MVC projects, be careful with the default javascript bundle inclusions; they can be hard to find sometimes. My second inclusion of jQuery was within one of my global layout pages under the line @Scripts.Render("~/bundles/jquery"). I personally prefer not rendering bundles and just linking to javascript as needed.

Cheers and special thanks to Kevin B for the help on this one.



回答2:

The old version of jQuery Cookie has been deprecated, so if you're getting the error:

$.cookie is not a function

you should upgrade to the new version.

The API for the new version is also different - rather than using

$.cookie("yourCookieName");

you should use

Cookies.get("yourCookieName");


回答3:

add this cookie plugin for jquery.



回答4:

You should add first jquery.cookie.js then add your js or jQuery where you are using that function.

When browser loads the webpage first it loads this jquery.cookie.js and after then you js or jQuery and now that function is available for use



回答5:

Check that you included the script in header and not in footer of the page. Particularly in WordPress this one didn't work:

wp_register_script('cookie', get_template_directory_uri() . '/js/jquery.cookie.js', array(), false, true);

The last parameter indicates including the script in footer and needed to be changed to false (default). The way it worked:

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


回答6:

I had this problem as well. I found out that having a $(document).ready function that included a $.cookie in a script tag inside body while having cookie js load in the head BELOW jquery as intended resulted in $(document).ready beeing processed before the cookie plugin could finish loading.

I moved the cookie plugin load script in the body before the $(document).ready script and the error disappeared :D



转载请标明出处:jQuery $.cookie is not a function
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!