मेरे पास एमवीसी को अजाक्स कॉल है जो आंशिक दृश्य देता है। सत्र समाप्त होने तक या कुकी समाप्त होने तक यह ठीक है। जब मैं AJAX कॉल करता हूं तो यह एक div के अंदर सामग्री प्रदर्शित करता है जिसका अर्थ आंशिक रूप से किया जाना था। मैं यह कैसे पता लगा सकता हूं कि मेरा सत्र अजाक्स कॉल के दौरान समाप्त हो गया है और पूर्ण स्क्रीन/पृष्ठएमवीसी 3/Jquery AJAX/सत्र की समाप्ति/सी # - हैंडलिंग सत्र टाइमआउट durng AJAX कॉल
उत्तर
पर आप सही ढंग से रीडायरेक्ट कर सकते हैं आप क्लाइंट पर जावास्क्रिप्ट के साथ टाइमर बना सकते हैं जो सत्र के समय समाप्त होने पर उपयोगकर्ता को एक संवाद दिखाएगा । आप टाइमर का मान बस अपने सत्र के समय के अनुसार निर्धारित करेंगे। फिर AJAX अनुरोध पर, यह गिनती को भी रीसेट कर देगा।
var g_sessionTimer = null;
function uiSessionInit() {
id = "uiTimeout";
timeout = 3600000 * 24; // 1 day timeout
uiSessionSchedulePrompt(id, timeout);
$('body').ajaxStart(function() {
// reset timer on ajax request
uiSessionSchedulePrompt(id, timeout);
});
}
function uiSessionSchedulePrompt(id, timeout) {
if (g_sessionTimer)
clearTimeout(g_sessionTimer);
g_sessionTimer = setTimeout(function() { uiSessionExpiring(id); }, timeout);
}
function uiSessionExpiring(id) {
// create a dialog div and use this to show to the user
var dialog = $('<div id="uiTimeout"></div>').text("Your session with has timed out. Please login again.");
$('body').append(dialog);
$('#uiTimeout').dialog({
autoOpen: true,
modal: true,
title: 'Expired Session',
buttons: {
"OK": function(){
$(this).dialog('close');
}
},
close: uiSessionDialogClose
});
}
function uiSessionDialogClose(){
// take user to sign in location
location = 'http://www.mypage.com';
}
मैं एक आवरण तत्व में अपने सभी अनुरोधों encapsulating की सिफारिश करेंगे:
public class JsonResponse<T>
{
public JsonResponse()
{
}
public JsonResponse(T Data)
{
this.Data = Data;
}
public T Data { get; set; }
public bool IsValid { get; set; }
public string RedirectTo { get; set; }
}
क्या मॉडल आप अपने ग्राहक के लिए भेजना चाहते हैं डेटा में है।
रीडायरेक्ट प्राप्त करने के लिए, मैं ग्लोबल में GlobalAuthorize विशेषता का उपयोग करता हूं। एएक्सएक्स और handle for HandleUnauthorizedRequests जोड़ा।
public sealed class GlobalAuthorize : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest
(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.Result = new JsonResult
{
Data = new JsonResponse<bool>
{
IsValid = false,
//RedirectTo = FormsAuthentication.LoginUrl
RedirectTo = "/"
},
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
साथ ही, मैं एक ही समारोह जो RedirectTo
लिए जाँच करता है में सभी मेरी अजाक्स अनुरोध समझाया गया है।
function global_getJsonResult(Controller, View, data, successCallback, completeCallback, methodType)
{
if (IsString(Controller)
&& IsString(View)
&& !IsUndefinedOrNull(data))
{
var ajaxData;
var ajaxType;
if (typeof (data) == "string")
{
ajaxData = data;
ajaxType = "application/x-www-form-urlencoded"
}
else
{
ajaxData = JSON.stringify(data);
ajaxType = "application/json; charset=utf-8";
}
var method = 'POST';
if (!IsUndefinedOrNull(methodType))
{
method = methodType;
}
var jqXHR = $.ajax({
url: '/' + Controller + '/' + View,
data: ajaxData,
type: method,
contentType: ajaxType,
success: function(jsonResult)
{
if (!IsUndefinedOrNull(jsonResult)
&& jsonResult.hasOwnProperty("RedirectTo")
&& !IsUndefinedOrNull(jsonResult.RedirectTo)
&& jsonResult.RedirectTo.length > 0)
{
$.fn.notify('error', 'Login Expired', 'You have been inactive for a prolonged period of time, and have been logged out of the system.');
window.setTimeout(function() { window.location = jsonResult.RedirectTo }, 5000);
}
else if (IsFunction(successCallback))
{
successCallback(jsonResult, Controller + '/' + View);
}
},
error: function(jqXHR, textStatus, errorThrown)
{
if (errorThrown != 'abort')
{
$.fn.notify('error', 'AJAX Connection Error', textStatus + ': ' + errorThrown);
}
},
complete: function(jqXHR, textStatus)
{
if (IsFunction(completeCallback))
{
completeCallback(jqXHR, textStatus, Controller + '/' + View);
}
}
});
return jqXHR;
}
}
मैंने आपके रास्ते का उपयोग करने की कोशिश की, मेरा हैंडलअनुराइज्ड रिक्वेस्ट पूरी तरह से काम करता है, लेकिन यह कभी भी global_getJsonResult() विधि में नहीं आता है, क्या आप मुझे एक उदाहरण दे सकते हैं कि आपने अपनी jquery विधि को कैसे समेकित किया? – Bharat
सुनिश्चित नहीं है कि आपका क्या मतलब है। उपर्युक्त उदाहरण में एक विधि है जो AJAX अनुरोधों को समाहित करती है और सभी अनुरोध मेरे जेएस कोड में उस विधि का उपयोग करते हैं। –
- 1. टेपेस्ट्री एप्लिकेशन में सत्र टाइमआउट AJAX त्रुटि
- 2. JQuery AJAX कॉल डिफ़ॉल्ट टाइमआउट मान
- 3. एमवीसी 3 में सत्र टाइमआउट कैसे बढ़ाएं
- 4. यूनिकॉर्न टाइमआउट हैंडलिंग
- 5. वेब अनुरोध टाइमआउट हैंडलिंग?
- 6. jQuery AJAX त्रुटि हैंडलिंग
- 7. एएसपी.नेट एमवीसी सत्र समाप्ति
- 8. स्प्रिंग सत्र हैंडलिंग: HttpSessionDestroyedEvent
- 9. जेबॉस सत्र टाइमआउट
- 10. वसंत सुरक्षा सत्र टाइमआउट
- 11. PHP सत्र डिफ़ॉल्ट टाइमआउट
- 12. PHP सर्वर सत्र टाइमआउट
- 13. सत्र एक्सपेयर/टाइमआउट
- 14. node.js एक्सप्रेस AJAX सत्र
- 15. एनएचबीर्नेट सत्र बदलना। कमांड टाइमआउट
- 16. jQuery AJAX और विभिन्न डेटा हैंडलिंग
- 17. एमवीसी एरिया एरर हैंडलिंग
- 18. AJAX कॉल
- 19. AJAX कॉल
- 20. AJAX कॉल
- 21. एएसपी.नेट एमवीसी अपवाद हैंडलिंग
- 22. AJAX कॉल
- 23. एमवीसी AJAX
- 24. AJAX
- 25. जावा मेल टाइमआउट और कनेक्शनटाइम हैंडलिंग
- 26. ओरेकल 11 जी सत्र टाइमआउट
- 27. HttpSessionListener - क्या सत्र डेस्ट्रायड विधि सत्र टाइमआउट पर कॉल किया जाएगा?
- 28. निष्पादन टाइमआउट एएसपीनेट एमवीसी
- 29. AJAX अनुरोधों में सत्र टाइमआउट को संभालने का सबसे अच्छा तरीका क्या है?
- 30. एंड्रॉइड एप्लिकेशन में सत्र टाइमआउट हैंडलिंग को बनाए रखने के लिए कैसे करें
मुझे एक ही समस्या का सामना करना पड़ रहा है, क्या आपको इसके लिए समाधान मिला है? – oqx