61

私がやりたいのは、変数を作成し、それに値を与え、ウィンドウを閉じて再度開き、最後のセッションで設定した値を取得できるようにすることです。それを行う最も簡単な方法は何ですか?JQueryの回答は大歓迎です。

4

5 に答える 5

105

そのために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を使用する理由はありません。

于 2013-01-10T20:32:30.403 に答える
14

次の 3 つのオプションがあります。

  1. クッキー: https://developer.mozilla.org/en-US/docs/DOM/document.cookie
  2. DOMStorage (sessionStorage または localStorage): https://developer.mozilla.org/en-US/docs/DOM/Storage
  3. ユーザーがログインしている場合、ユーザー (またはグループ) をキーとするサーバーの DB にデータを保持できます。
于 2013-01-10T20:36:59.713 に答える
10

要件で許可されている場合は、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;

それがあなたの質問に答えたことを願っています。

于 2013-01-10T20:37:34.347 に答える