1

jQueryでセッション変数を設定できますか?

jQueryからセッションにデータを保存する必要があり、jQueryを介してそのデータを取得したいと思います。

のようなものはありますか

$.getSession.set("var","value");
4

2 に答える 2

3

セッションはサーバー側でアクセスできます。ただし、必要に応じて、関数を作成することでセッションにアクセスできます。たとえば、サーバーへのajaxリクエストを呼び出して、必要なものを取得します。

編集:

気に入ったので、ASP.NETMVCフレームワークを使用してこれを紹介します。他のフレームワークについても同じ考えです。サーバーにセッションについて尋ねるだけです。

したがって、サーバー側では次のようになります。単純なコントローラーと2つの基本的なアクションが記述されています。

public class HomeController : Controller
{
    public ActionResult Index()
    {            
        // store sample data
        Session["user"] = new { name = "Anton Chigurh", age = 42 };
        return View();
    }

    public JsonResult GetSessionValue(string key)
    {
        return Json(Session[key]);
    }        
}

Indexまず、アクションを呼び出すなどして、セッションに何かを保存する必要があります。次に、GetSessionValueアクションを呼び出して、以前に保存された値を取得します。アプリケーションのセッションまたはブラウザのCookieを無効にしていない限り、正しい値を取得する必要があります。

値を取得する方法は?ajaxリクエストを送信するだけです:

  1. 同期リクエストを実行するjavascript関数を記述できます。これにより、実際にはブラウザが少しの間フリーズする可能性があります(一部の計算に使用されるサーバーの時間消費、ネットワークインフラストラクチャの状態などによって異なります)。

    function getSessionValue(key) {
        var result;
        $.ajax({
            url: "/Home/GetSessionValue",
            type: 'POST',
            dataType: 'json',
            data: JSON.stringify({ key: key }),
            contentType: 'application/json; charset=utf-8',
            async: false
        }).done(function (data) {
            result = data;
        });
        return result;
    }
    
    // invoke
    var user = getSessionValue("user");
    console.log(user.name + ": " + user.age);
    
  2. または非同期バージョン。完了時にコールバックを呼び出します。

    function getSessionValue(key, callback) {    
        $.ajax({
            url: "/Home/GetSessionValue",
            type: 'POST',
            dataType: 'json',
            data: JSON.stringify({ key: key }),
            contentType: 'application/json; charset=utf-8',        
        }).done(function (data) {
            callback(data);
        });
    }
    
    // invoke 
    getSessionValue("user", function(x) {
        console.log(x.name + ": " + x.age);
    });
    

ところで:私はjson seriazlizationを使用しました。これは、サーバーとの間でオブジェクトをやり取りするときに好むアプローチだからです。その他-jQuerydoneイベントは成功した場合にのみトリガーされます。サーバー側でエラーが発生した場合(例:キャッチされなかった例外)、リクエストはhttp 500を返し、イベントは呼び出されません。

于 2012-11-21T13:03:39.807 に答える
1

jQueryを使用したクライアント側セッションの処理を検討している場合は、そのためのプラグインが必要になります。

私が考えることができるのはjQuerySessionPluginです。

于 2012-11-21T13:02:49.757 に答える