2011-12-09 14 views
0

以下のswitch文は、存在しないクッキーを捕まえていません。javascriptでヌルクッキーをチェックする方法は?

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'; 

[OK]をいくつか試しましたが、私はまだ説明できないほど問題があります。

$('#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文が評価されていますが、常にデフォルトの場合になります。私はまだクッキーがnull/undefinedの場合にそれをキャッチする方法を理解する必要があります。

+0

がhttp://jsfiddle.net/uwsaf/ ...ですを参照してください追加未定義の場合もオーバー ' '''と '0 'と' false'をnull'なので 'のために行きます。ケースのシーケンスを移動してみてください – andlrc

+0

'var stateCookie = $ .cookie(" ia_state ")|| ''; 'jQueryのクッキーゲッターを使用して、あなたはクッキーまたは空の文字列を取得します。 –

+0

あなたは誰かの質問に、それが未定義であると答えたばかりです。それはgetCookie関数と関係があります。その関数をチェックしてください。クッキーが見つかった場合はそれを返し、何も返さずにドロップアウトすると、未定義のまま残っているものが見つからない場合があります。スイッチに「case undefined:」を追加するだけでもかまいません(更新された記事を参照)。 – craniumonempty

答えて

1

私はMike Stewartに同意します。あなたは休憩がないので、 ''として返ってきたら、デフォルトのステートメントに進みます。それを変更してもまだ奇妙な結果が得られている場合は、その問題が別の場所にある可能性があります。

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; 

EDIT:

+0

ありがとうございました! – Darren

0

何かのように:

 
if($.cookie('cookiename') == null) { 
    /// is null 
} 
+0

私のクッキーの名前を使用してこのコードを試してみると、スクリプトエラーが発生します:SCRIPT438:オブジェクトはプロパティまたはメソッド 'cookie'をサポートしていません – Darren

3

あなたは休憩を欠けている:それはスイッチに入る前に

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

は次のように、あなたのクッキーを検証します。

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

MDNは、アイテムの機能を持っています:

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

次にスイッチ。

したがって、スイッチからケースヌルを削除してください。

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

クッキーあなたはそれを空にしています。あなたがそれをキャッチしたかどうかは分かりません。 – craniumonempty

+0

ありがとう、私は間違いをした。文字列ではないときは空の文字列を返し、そうであれば文字列を返します。 null戻り値またはそれ以外の無効な値は、空の文字列になります。 –

+0

これはうまくいくようですが、試してみるとstateCookieの値はこの行が実行された後も定義されていませんでした。 – Darren

関連する問題