私がやりたいのは、変数を作成し、それに値を与え、ウィンドウを閉じて再度開き、最後のセッションで設定した値を取得できるようにすることです。それを行う最も簡単な方法は何ですか?JQueryの回答は大歓迎です。
5 に答える
そのためにlocalStorageを使用してください。それはセッションの間持続します。
書く:
localStorage['myKey'] = 'somestring'; // only strings
読む :
var myVar = localStorage['myKey'] || 'defaultValue';
複雑な構造を保存する必要がある場合は、JSONでシリアル化することができます。例えば :
読む :
var stored = localStorage['myKey'];
if (stored) myVar = JSON.parse(stored);
else myVar = {a:'test', b: [1, 2, 3]};
書く:
localStorage['myKey'] = JSON.stringify(myVar);
複数のキーを使用できることに注意してください。それらはすべて、同じドメインのすべてのページによって取得されます。
IE7との互換性が必要な場合を除いて、廃止された小さなCookieを使用する理由はありません。
次の 3 つのオプションがあります。
- クッキー: https://developer.mozilla.org/en-US/docs/DOM/document.cookie
- DOMStorage (sessionStorage または localStorage): https://developer.mozilla.org/en-US/docs/DOM/Storage
- ユーザーがログインしている場合、ユーザー (またはグループ) をキーとするサーバーの DB にデータを保持できます。
要件で許可されている場合は、Cookie を作成できます。Cookie ルートを選択した場合、解決策は次のようになります。また、Cookie の利点は、ユーザーがブラウザを閉じて再度開いた後でも、Cookie が削除されていない場合、値が保持されることです。
Cookie * Cookieを作成して保存する: *
function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
指定された Cookie を返す関数:
function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x=x.replace(/^\s+|\s+$/g,"");
if (x==c_name)
{
return unescape(y);
}
}
}
Cookie が設定されている場合にウェルカム メッセージを表示する
function checkCookie()
{
var username=getCookie("username");
if (username!=null && username!="")
{
alert("Welcome again " + username);
}
else
{
username=prompt("Please enter your name:","");
if (username!=null && username!="")
{
setCookie("username",username,365);
}
}
}
上記の解決策は、Cookie を介して値を保存しています。サーバー側に値を保存することなく、かなり標準的な方法です。
Jクエリ
セッション ストレージに値を設定します。
Javascript:
$.sessionStorage( 'foo', {data:'bar'} );
値を取得します。
$.sessionStorage( 'foo', {data:'bar'} );
$.sessionStorage( 'foo' );Results:
{data:'bar'}
ローカル ストレージ 次に、ローカル ストレージを見てみましょう。たとえば、永続化したい変数の配列があるとします。次のように実行できます。
var names=[];
names[0]=prompt("New name?");
localStorage['names']=JSON.stringify(names);
//...
var storedNames=JSON.parse(localStorage['names']);
ASP.NET を使用したサーバー側の例
セッションへの追加
Session["FirstName"] = FirstNameTextBox.Text;
Session["LastName"] = LastNameTextBox.Text;
// セッション状態からオブジェクトを取得するときは、 // 適切な型にキャストします。
ArrayList stockPicks = (ArrayList)Session["StockPicks"];
// Write the modified stock picks list back to session state.
Session["StockPicks"] = stockPicks;
それがあなたの質問に答えたことを願っています。