如何在javascript中检查空cookie

How to check for a null cookie in javascript?

本文关键字:检查 cookie javascript      更新时间:2023-09-26

下面的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/undefined

你错过了一个休息时间:

                ...
                case '':
                    window.location = '/Teacher-Login/VA';
                    break;
                default:
                    window.location = '/pages/state-login/login.html';
                    break;

mdn具有item功能:

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

我同意Mike Stewart。您错过了一个break,所以如果它返回为",那么它将继续使用默认语句。如果您在更改后仍然得到奇怪的结果,那么问题可能在其他地方。

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;

编辑:添加未定义大小写

类似于

<>之前If ($.cookie('cookiename') == null) {///为空}

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

stateCookie = (typeof stateCookie != 'string')?'':stateCookie;

Then the switch.

所以,从你的开关中删除null。

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