2011-06-22 8 views
3

Javascriptを使用して、ボタンを押すたびにID「username」の入力フィールドの値を持つCookieを作成したいとします。私はそのクッキーを読んでウェブサイトに表示したいと思っています。クッキーの知識をテストするためにこれを試しましたが、コードが機能しないため、この問題の解決方法を知りたいと思います。Javascript&Cookiesに関する問題

私はつもりelated.comからこの2つの関数を使用しています:ボタンを押すと

function set_cookie (name, value, exp_y, exp_m, exp_d, path, domain, secure) 
{ 
var cookie_string = name + "=" + escape (value); 

if (exp_y) 
{ 
    var expires = new Date (exp_y, exp_m, exp_d); 
    cookie_string += "; expires=" + expires.toGMTString(); 
} 

if (path) 
    cookie_string += "; path=" + escape (path); 

if (domain) 
    cookie_string += "; domain=" + escape (domain); 

if (secure) 
    cookie_string += "; secure"; 

document.cookie = cookie_string; 




function get_cookie (cookie_name) 
{ 
var results = document.cookie.match ('(^|;) ?' + cookie_name + '=([^;]*)(;|$)'); 

if (results) 
    return (unescape (results[2])); 
else 
    return null; 
} 

この機能を実行するために起こっている:

function Register() 
{ 
var username = document.getElementById("username").value; //Read the input value 
set_cookie("username", username, 2012, 12, 23); //Set the cookie 
document.write(get_cookie("username")); //Read the cookie 
} 

私はこれを実行しようとするたびに、 get_cookie関数はnullを返します。これは少なくともそれが正常に実行されていることを意味しますが、作成したばかりの "username"という名前のクッキーは見つかりません。誰でも助けることができますか?

+0

'document.getElementById(" username ")。value'の値は何ですか? –

+0

ユーザーがに入力した内容は何でも構いません。 – LonelyWebCrawler

+0

まあ、はい。しかし、ユーザー名が(JavaScriptで)設定されていることを確認していますか?基本的には、 'var username = document.getElementById(" username ")の' username'の値は何ですか? –

答えて

2

あなたはChromeを使用しているとします。 Chrome(およびChromium)では、セキュリティに関する懸念事項を慎重に判断するため、ローカルページでCookieを設定またはアクセスすることはできません(http://code.google.com/p/chromium/issues/detail?id=535#c3参照)。あなたが投稿したコードは、サーバーに置かれて送信されても​​機能しますが、ローカルシステムからページをfile:// URLとして開いた場合、正しく動作しません。それがjsfiddleが動作する理由です。

他の一部のブラウザでは、ローカルページでCookieを使用できるため、JavaScriptとCookieを試してみる場合は、そのうちの1つを試してみる方がよいでしょう。 Firefoxは予想通りの動作を可能にしていますが、将来は変更を検討している可能性があります。 Chromeにはテスト中に使用できるコマンドラインフラグ--enable-file-cookiesもありますが、毎日の使用には推奨しません。

また、ページをサーバーに配置してテストすることもできます。無料のホスティングサービスのいずれか、またはローカルコンピュータのApacheなどのインスタンスが動作します。重要な部分は、HTTP経由でページにアクセスすることです。

+0

ありがとうございますが、私はこれを既に解決しました;) – LonelyWebCrawler