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