سؤال

كيفية تخزين القيم في الجلسة باستخدام jQuery. أنا أستخدم الكود التالي

var Link = '<%=Session["Link"]%>';

للحصول على بيانات من الجلسة. كيف تفعل العملية العكسية.

مشكلة:

 I need this in my master page. so i cant use .ajax{}.

جيثا

هل كانت مفيدة؟

المحلول

ربما ستحتاج إلى إعداد HTTP معالج أو شيء مشابه سيقبل الطلبات وتخزين الأشياء في الجلسة. لدى Visual Studio هذا في مكان ما في قوائم "إضافة" في عرض الحل. (إذا كنت تستخدم ASP.NET MVC ، فأنت فقط إعداد إجراء آخر بدلاً من معالج عام.)

نظرًا لأن هذه القيم قد يكون لها أنواع مختلفة (int ، سلسلة ، إلخ) و نظرًا لأنك لا تريد أن يستغل المستخدمون الضارون في أي مفتاح جلسة يرونهم مناسبًا ، فمن المحتمل أن ترغب في إعداد فرع لتحديد ما يجب فعله مع كل مفتاح. شيء من هذا القبيل (داخل المعالج الذي قمت بإنشائه):

string key = context.Request.QueryString["key"].ToString();
string val = context.Request.QueryString["val"].ToString();
if(key == "AshDiffuserID"){
  int ash_diffuser_id = Convert.ToInt32(val);
  Session["AshDiffuserID"] = ash_diffuser_id;
}
else if(key == "PesterchumHandle") {
  string handle = val;
  Session["PesterchumHandle"] = handle;
} else // etc...

بعد ذلك ، ستحتاج إلى إعداد ملف بعد طلب HTTP من خلال jQuery الذي يضع أي القيم التي تحتاجها في حقول "المفتاح" و "Val".

$.post(
  'url/to/your/handler.ashx',
  {key: "PesterchumHandle", val: "carcinoGenetecist"}
); 

نصائح أخرى

لقد أهدرت يومي بالكامل لفرز هذه المشكلة في حين أن هذا مجرد حل سريع. أثناء استدعاء Pagemethod ، لا يتم تمرير معرف الجلسة باستخدام عنوان URL للطلب ، لذلك يتم إطلاق حدث Session_Start الجديد. نحتاج فقط إلى تعيين مسار الطلب الدقيق قبل استدعاء pagemethod ، بحيث لا يمكن إطلاق حدث بدء الجلسة الجديدة.

if ('<%= HttpContext.Current.Session.IsCookieless %>==True') {
//need to pass session id in request path
PageMethods.set_path('<%= System.Web.Configuration.WebConfigurationManager.AppSettings("WebRoot") %>(S(<%=Session.SessionID%>))/secure/PageName.aspx');
}
PageMethods.PageMethodName(param1,param2, CallSuccess, CallFailed);

ستحتاج إلى القيام بنشر Ajax للخادم عبر jQuery.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top