PDA

View Full Version : بررسی مقدار session از طریق تابع ajax در jquery



آرام جان گل
دوشنبه 29 مهر 1392, 07:43 صبح
با سلام
من می خوام از طریق تابع ajax در jquery مقدار session و زمان timeOut شدن اون را بررسی کنم و می خوام حتما هم ajax ی این کار را انجام بدم که با وجود پست بکی که صورت می گیرد اما کاربر متوجه نشود و برنامه من که کاملا clientSide است به چشم کاربر نیاید.

می دونید که تایع ajax در jquery فقط با توابع استاتیک و توابعی که حالت سرویس داشته باشند (webmethod) کار می کند و در توابع استاتیک نمی تونم session را بررسی کنم چون به session دسترسی ندارم

لطفا اگر کسی در این زمینه می تونه راهنمایی کنه من کدم را هم می نویسم تا بهتر بررسی بشه
کد زیر فراخوانی تابع ajax در سمت کلاینت است


$(

"#_tab-1").click(function (event) {

event.preventDefault();

$.ajax({

url:

"formname.aspx/CheckSession",

success:

function (result) {

$(

"#div1").html(result);

}

});



return false; //for good measure

});


و این هم تابع سمت سرور که session را بررسی می کند



[

WebMethod]



public static string CheckSession()

{



if (Session["usercode"] == null)



return "0";



else



return "1";

}


با وجودی که من در تابع CheckSession سشن را بررسی می کنم و آن را نوشته ام اما آن را نمی شناسد

لطفا راهنمایی کنید.

آرام جان گل
دوشنبه 29 مهر 1392, 09:20 صبح
با سلام
جواب را پیدا کردم و برای دوستان عزیر که می خوان استفاده کنن و در رویدادهای سمت کلاینت هم Reset شدن session را بررسی کنند.

به این صورت که من سمت کلاینت نیاز به یک تابع ajax دارم که باعث میشه بدون اینکه کاربر متوجه پست بک شدن بشه به سمت سرور بره و session را بررسی کنه

این تابع به صورت زیر است :


$("#_tab-1").click(function (event) {
event.preventDefault();

$.ajax({
type: 'POST',
url: 'FormName.aspx/CheckSession',
contentType: 'application/json; charset=utf-8',
success: function (data, textStatus, xhr) {
if (data.d == "0")
window.location = "Default.aspx";
}
});

return false; //for good measure
});

با استفاده از این تابع موقع کلیک روی لینک موردنظر یک درخواست به سرور و تابع CheckSession در فرم FormName.aspx داده می شود و در آنجا از طریق یک تابع دیگر Session بررسی می شود.
تابع CheckSession :




[WebMethod]
public static string CheckSession()
{
string Result = "";

WebServices.wsSah _wsSah = new WebServices.wsSah();
Result = _wsSah.CheckSession();

return Result;
}


همانطور که گفتم توابعی که از طریق تابع ajax در jquery فراخوانی میشوند باید static باشند و از نوع WebMethod که به خاطر استاتیک بودن به Session دسترسی ندارند پس از یک تابع دیگر که غیر استاتیک هست و نیاز به نمونه سازی داره مقدار session را بررسی می کنیم .

در بخش clientside خصوصیتی وجود داره به نام success که در این بخش مقدار بازگشتی از تابع CheckSession بررسی می شود و در صورتی که نشان دهنده reset شدن session است به صفحه لاگین فرستاده میشود

این راهی بود که من بهش رسیدم حالا اگر از دوستان راه بهتری از طریق ajax می شناسند خوشحال می شم مطلع بشم