$.cookie 不是函数

IT技术 javascript jquery
2021-01-24 11:53:57

当我尝试加载使用 jquery 的页面时,当遇到以下行时:

if ($.cookie('compare') != null) 

我收到错误 $.cookie is not a function。有没有人见过这个?

6个回答

这意味着该$.cookie插件没有包含在页面中,至少没有被调用。确保它被包含在内,并且在被使用之前被包含在内将它包含在 jQuery 本身之后是安全的。

只是一个提示:其他几个插件依赖于 cookie 插件(但在调用它之前不一定要检查它是否存在),您可能正在使用一个。

更多可能的解决方案在这里:stackoverflow.com/questions/18024539/...
2021-03-23 11:53:57
这就是问题所在,似乎我的托管服务提供商在加载 jquery.cookie.js 时遇到了问题,重命名为 jqueryycookie.js 解决了问题
2021-04-14 11:53:57

你有jQuery cookie 插件吗?

不,但我可以向您展示如何使一个非常简单,例如......

创建一个单独的 js 文件,将其命名为您想要的名称,为了方便起见,我将其称为 jCook。

在标题中,添加 jQuery 后,添加新文件:

<script type="text/javascript" src="jquery.js"></script>  
<script type="text/javascript" src="jCook.js"></script>  <!-- here it is! -->

下面是放在文件中的简单代码:

(function($) {
    if (!$.setCookie) {
        $.extend({
            setCookie: function(c_name, value, exdays) {
                try {
                    if (!c_name) return false;
                    var exdate = new Date();
                    exdate.setDate(exdate.getDate() + exdays);
                    var c_value = escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
                    document.cookie = c_name + "=" + c_value;
                }
                catch(err) {
                    return false;
                };
                return true;
            }
        });
    };
    if (!$.getCookie) {
        $.extend({
            getCookie: function(c_name) {
                try {
                    var i, x, y,
                        ARRcookies = document.cookie.split(";");
                    for (i = 0; i < ARRcookies.length; i++) {
                        x = ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
                        y = ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
                        x = x.replace(/^\s+|\s+$/g,"");
                        if (x == c_name) return unescape(y);
                    };
                }
                catch(err) {
                    return false;
                };
                return false;
            }
        });
    };
})(jQuery);

如果你做错了什么,try catch 和什么不仅有助于确保你得到“错误”的回报,而且真的不应该成为一个问题。使用代码很容易...

在您的页面上,您的加载代码或其他任何内容只需执行以下操作:

$.setCookie("nameOfCookie", "someValue", 30); // where 30 is the number 
// of days to expire, or you could leave blank as:
$.setCookie("nameOfCookie", "someValue")

// And to retrieve your cookie
$.getCookie("nameOfCookie");

看看有多简单!?

只是为了解决,下面是一个真实世界的例子,用于保存选择下拉菜单的状态

$(function(){
        $("select[name=somthing]").change(function(e) {
            $.setCookie("selectThis", $(this).val());
        });
        //  And to use ...
        if ($.getCookie("selectThis")) $("select[name=somthing]").val( $.getCookie("selectThis") ).change();
});
喜欢这个解决方案。易于实施并完美处理我的对象
2021-04-10 11:53:57

基本上,这个问题可能有多种原因。

  1. 您可能没有添加 jquery 插件。
  2. 确保在 cookie 插件之前包含 jQuery 文件
  3. 如果您已经完成了以上两个操作,请尝试下载新版本的jquery-cookie 插件 ,该插件也解决了我的问题。

尝试为您的域启用 Mod_Sec,或要求您的托管公司启用它。希望这可以帮助。