jQueryでセッション変数を設定できますか?
jQueryからセッションにデータを保存する必要があり、jQueryを介してそのデータを取得したいと思います。
のようなものはありますか
$.getSession.set("var","value");
セッションはサーバー側でアクセスできます。ただし、必要に応じて、関数を作成することでセッションにアクセスできます。たとえば、サーバーへの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リクエストを送信するだけです:
同期リクエストを実行する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);
または非同期バージョン。完了時にコールバックを呼び出します。
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を返し、イベントは呼び出されません。
jQueryを使用したクライアント側セッションの処理を検討している場合は、そのためのプラグインが必要になります。
私が考えることができるのはjQuerySessionPluginです。