javascript $.cookie不是函数

bqujaahr  于 2023-03-11  发布在  Java
关注(0)|答案(9)|浏览(138)

当我尝试加载使用jquery的页面时,点击了下面的行:

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

我得到错误$.cookie不是一个函数.有人以前见过这个吗?

92vpleto

92vpleto1#

这意味着$.cookie plugin没有被包含在页面中,至少在调用它之前没有。确保它被包含在页面中,并且在使用它之前被包含。为了安全起见,将它包含在jQuery本身之后。
只是一个提示:一些 * 其他 * 插件依赖于cookie插件(但不必在调用它之前检查它是否存在),您可能正在使用一个。

1aaf6o9v

1aaf6o9v3#

不,但我可以教你如何做一个非常简单的像...
创建一个单独的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和what not只是帮助确保你在做错了什么的时候得到一个“false”的返回,但是真的不应该成为一个问题。
在你的页面上,你的加载代码或任何只是做以下:

$.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();
});
scyqe7ek

scyqe7ek4#

基本上,这个问题可能有各种原因。
1.您可能没有添加jquery插件。
1.确保在cookie插件之前包含jQuery文件
1.如果你已经做了以上两个,然后尝试下载新版本的jquery-cookie plugin,也解决了我的问题。

7jmck4yq

7jmck4yq5#

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

z3yyvxxp

z3yyvxxp6#

在我们的Drupal 7安装中也发生了同样的问题。如果我理解正确的话,这是由于cPanel中的ModSecurity配置阻止了文件。请参见http://forums.cpanel.net/f5/mod-security-blocking-jquery-cookie-javascript-drupal-installation-191002.html

f0ofjuux

f0ofjuux7#

我一直在用这个密码-

if( $.cookie('siteLayout') != undefined ){
   if( $.cookie('siteLayout') == 'compact' ) 
   $(settings.bodyElem).addClass('container');
}

它工作正常。但我需要在一个特定的页面中使用另一个jQuery版本,版本是1.7.2,但我实际上使用的是1.10.2使用多个jQuery版本后,我得到了这个错误-
类型错误:$.cookie不是函数
然后我用了jQuery.cookie而不是$.cookie,它工作了。希望,这也会有帮助;)

wkyowqbh

wkyowqbh8#

对我来说,这个问题在下载了最新版本的jquery. cookiejs后得到了修复

gzszwxb4

gzszwxb49#

<script src="js/jquery.mobile-1.4.5.min.js"></script>
<script src="js/jquery.cookie.js"></script>

第一个插件必须是juqery.js,第二个插件必须是cookie.js

相关问题