如何在javascript中检查空cookie?

如何在javascript中检查空cookie?,javascript,jquery,Javascript,Jquery,以下switch语句未捕获不存在的cookie switch (stateCookie) { case 'Virginia': window.location = '/Teacher-Login/VA'; break; case 'North Carolina': windo

以下switch语句未捕获不存在的cookie

switch (stateCookie) {
                    case 'Virginia':
                        window.location = '/Teacher-Login/VA';
                        break;
                    case 'North Carolina':
                        window.location = '/Teacher-Login/NC';
                        break;
                    case 'South Carolina':
                        window.location = '/Teacher-Login/SC';
                        break;
                    case null:
                        window.location = '/Teacher-Login/VA';
                        break;
                    case '':
                        window.location = '/Teacher-Login/VA';
                    default:
                        window.location = '/pages/state-login/login.html';
好的,我试过几种方法,但我仍然莫名其妙地遇到了问题。以下是我目前掌握的代码:

$('#welcome select').change(function () {
    var stateSelected = $('option:selected', this).val();
    var stateCookie = getCookie("ia_state");
    if(stateSelected != stateCookie)
    {
        setCookie('ia_state', stateSelected);
        switch (stateCookie) {
            case 'Virginia':
            case null:
            case '':
                window.location = '/Teacher-Login/VA';
                break;
            case 'North Carolina':
                window.location = '/Teacher-Login/NC';
                break;
            case 'South Carolina':
                window.location = '/Teacher-Login/SC';
                break;
            default:
                window.location = '/pages/state-login/login.html';
}
}
}); 
正在对switch语句求值,但它始终是默认情况。我还没有弄清楚如果cookie为null/未定义,如何捕获它。

类似于:

if( $.cookie('cookiename') == null ) { /// is null } if($.cookie('cookiename')==null){ ///是空的 } 比如:

if( $.cookie('cookiename') == null ) { /// is null } if($.cookie('cookiename')==null){ ///是空的 }
你错过了一次休息:

                ...
                case '':
                    window.location = '/Teacher-Login/VA';
                    break;
                default:
                    window.location = '/pages/state-login/login.html';
                    break;
mdn具有项目功能:

function hasItem(sKey) { 
    return (new RegExp("(?:^|;\\s*)" + escape(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie); 
}  

你错过了一次休息:

                ...
                case '':
                    window.location = '/Teacher-Login/VA';
                    break;
                default:
                    window.location = '/pages/state-login/login.html';
                    break;
mdn具有项目功能:

function hasItem(sKey) { 
    return (new RegExp("(?:^|;\\s*)" + escape(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie); 
}  

在cookie进入交换机之前验证它,如:

stateCookie = (typeof stateCookie != 'string')?'':stateCookie;
然后是开关

因此,从开关中删除case null

case '':
    window.location = '/Teacher-Login/VA';

在cookie进入交换机之前验证它,如:

stateCookie = (typeof stateCookie != 'string')?'':stateCookie;
然后是开关

因此,从开关中删除case null

case '':
    window.location = '/Teacher-Login/VA';

我同意迈克·斯图尔特的观点。您缺少一个中断,因此如果它返回为“”,则它将转到默认语句。如果更改后仍然得到奇怪的结果,那么问题可能出在其他地方

var loc = '';
switch (stateCookie) {
    case 'Virginia':
    case null:
    case '':
    case undefined:
        loc = '/Teacher-Login/VA';
        break;
    case 'North Carolina':
        loc = '/Teacher-Login/NC';
        break;
    case 'South Carolina':
        loc = '/Teacher-Login/SC';
        break;
    default:
        loc = '/pages/state-login/login.html';
        break;
};
window.location = loc;

编辑:添加未定义的案例

我同意迈克·斯图尔特的观点。您缺少一个中断,因此如果它返回为“”,则它将转到默认语句。如果更改后仍然得到奇怪的结果,那么问题可能出在其他地方

var loc = '';
switch (stateCookie) {
    case 'Virginia':
    case null:
    case '':
    case undefined:
        loc = '/Teacher-Login/VA';
        break;
    case 'North Carolina':
        loc = '/Teacher-Login/NC';
        break;
    case 'South Carolina':
        loc = '/Teacher-Login/SC';
        break;
    default:
        loc = '/pages/state-login/login.html';
        break;
};
window.location = loc;


编辑:添加了未定义的大小写

请参见。。。表示
null
的值也超过
'
0
false
。尝试按案例的顺序移动
var stateCookie=$.cookie(“ia_state”)| |“”使用jQuery cookie getter和grant's,您将获得一个cookie或空字符串。您刚刚回答了某人的问题,该cookie未定义。这与getCookie函数有关。检查该函数,因为它可能会在找到cookie时返回cookie,如果没有找到cookie则会退出而不返回任何内容,从而使您无法定义cookie。您也可以将“case undefined:”添加到开关中(请参阅更新的帖子)。我收到以下错误:SCRIPT438:对象不支持属性或方法“cookie”。我们应该查看getCookie/setCookie函数以了解它们在做什么。我不认为它们是标准函数。看。。。表示
null
的值也超过
'
0
false
。尝试按案例的顺序移动
var stateCookie=$.cookie(“ia_state”)| |“”使用jQuery cookie getter和grant's,您将获得一个cookie或空字符串。您刚刚回答了某人的问题,该cookie未定义。这与getCookie函数有关。检查该函数,因为它可能会在找到cookie时返回cookie,如果没有找到cookie则会退出而不返回任何内容,从而使您无法定义cookie。您也可以将“case undefined:”添加到开关中(请参阅更新的帖子)。我收到以下错误:SCRIPT438:对象不支持属性或方法“cookie”。我们应该查看getCookie/setCookie函数以了解它们在做什么。我不认为它们是标准函数。如果cookie是字符串,那么就是清空它。不知道你是否抓到了。谢谢,我弄错了。当它不是字符串时,返回空字符串,当它是空字符串时,返回字符串。因此,对于null返回或任何其他无效,将变为空字符串。这似乎应该可以工作,但当我尝试它时,stateCookie的值在这行执行后仍然未定义。请创建一个示例代码,在JSFIDLE中重现您的错误。我想问题可能是其他原因。因为如果它是未定义的,typeof将返回“undefined”,然后将空字符串应用于它。如果cookie是字符串,则将其清空。不知道你是否抓到了。谢谢,我弄错了。当它不是字符串时,返回空字符串,当它是空字符串时,返回字符串。因此,对于null返回或任何其他无效,将变为空字符串。这似乎应该可以工作,但当我尝试它时,stateCookie的值在这行执行后仍然未定义。请创建一个示例代码,在JSFIDLE中重现您的错误。我想问题可能是其他原因。因为如果它没有定义,typeof将返回“undefined”,然后将空字符串应用于它。当使用我的cookie名称尝试此代码时,我收到一个脚本错误:SCRIPT438:对象不支持属性或方法“cookie”。当使用我的cookie名称尝试此代码时,我收到一个脚本错误:SCRIPT438:对象不支持属性或方法“cookie”