मैं एएसपीनेट, वीबीनेट, और jQuery का उपयोग कर रहा हूं। मुझे यह देखने की ज़रूरत है कि मेरा सत्र jQuery में मौजूद है या नहीं। मुझे पता है कि जावास्क्रिप्ट क्लाइंट साइड होने के कारण मैं jQuery में सत्रों के साथ काम नहीं कर सकता, जबकि सत्र सर्वर साइड हैं। इसलिए, मैंने सोचा कि एक कार्य-आसपास सत्र जानकारी को एक लेबल में संग्रहीत कर सकता है।

यहां मैं जो कोशिश कर रहा हूं वह काफी काम नहीं कर रहा है:

तो पेज_लोड पर, मैंने टेक्स्टबॉक्स को सत्र में सेट किया है (जो सत्र मौजूद होने पर "सत्य" के बराबर होता है): LblSession.Text = Session("MySession")

पेज_लोड पर भी, यदि सत्र समाप्त हो जाता है (15 मिनट पर सेट), तो मैं चाहता हूं कि लेबल सत्र को शून्य/झूठी अपडेट करे।

If Not Session("MySession") Then LblSession.Text = Session("MySession")

हालांकि जब मेरा सत्र समाप्त होता है, तो यह लेबल अपडेट नहीं होता है कि सत्र मौजूद है या नहीं।

मेरे jQuery पर, मुझे सत्र का मान मिलता है (यदि यह मौजूद है, तो यह सत्य है, अन्यथा, यह गलत या शून्य है): var mySession = $("#LblSession").text();

//Check to see if the session is true
if (mySession == "True") {
    'do something if session exists'
} else {
    'do something if session does not exist'
}

यह मेरा अंतिम लक्ष्य है, यह देखने में सक्षम होने के लिए कि क्या सत्र मौजूद है या यदि यह मेरे jQuery से समाप्त हो गया है।

2
Jess 7 अप्रैल 2020, 18:22
जब आप सर्वर और सत्र के साथ इंटरैक्ट करते हैं तो सत्र टाइमर रीसेट हो जाता है - इसलिए पेज लोड समय समाप्त हो जाएगा (आपकी जानकारी के अनुसार 15 मिनट तक), जैसा कि कोई अन्य अनुरोध होगा। जब सत्र समाप्त हो जाता है तो एक नया सत्र बनाया जाता है जब एक पृष्ठ के लिए एक नया अनुरोध आता है (नया सत्र टोकन) (प्रमाणीकरण के साथ भ्रमित न हों) - आप सत्र टोकन की तुलना यह देखने के लिए कर सकते हैं कि क्या आपके पास एक नया सत्र है - जब सत्र समाप्त हो गया इसमें मौजूद सारा डेटा सर्वर से हटा दिया जाएगा। आपको अलग से पूछने के लिए एक और "प्रबंधन" एपीआई की आवश्यकता है जो इस जानकारी को वापस कर देगा - अन्यथा यह श्रोडिंगर की बिल्ली की तरह थोड़ा सा है
 – 
developer
8 अप्रैल 2020, 12:43
यदि आपका अंतिम लक्ष्य सत्र स्थिति की लाइव जानकारी प्राप्त करना है - आप उस सत्र को अनुरोध नहीं भेज सकते हैं जिसकी आप निगरानी कर रहे हैं - यह टाइमर को रीसेट कर देगा, और इस प्रकार आपने एक जीवित अनुरोध बनाया है। आपको एक अलग ऐप बनाने की आवश्यकता है - जिसमें सत्र डेटा तक पहुंच है, लेकिन किसी अन्य सत्र के माध्यम से स्वयं पहुंच योग्य है - आप इस अन्य एपीआई पर नजर रखने के लिए सत्र टोकन पास कर सकते हैं, और फिर यह अपनी स्थिति देखने के लिए सत्र को देख सकता है . आप ऐसा क्यों चाहते हैं ??
 – 
developer
8 अप्रैल 2020, 12:47

1 उत्तर

सबसे बढ़िया उत्तर

आईडी एचटीएमएल टैग पर आपका जावास्क्रिप्ट कॉल शायद गलत है, जांचें कि आईडी नियंत्रण मौजूद है:

<asp:Label runat="server" ID="LblSession"></asp:Label>
// render as:
<span id="[if inside Masterpage ex. ContentMain_]LblSession"></span>
$("#LblSession").text();

Web.config का कॉन्फ़िगरेशन जांचें, टैग clientIDMode का मान, आईडी इस सेटिंग और पृष्ठ संरचना पर निर्भर करता है, उदाहरण के लिए यदि आपके पास मास्टरपेज और कंटेनर नियंत्रण हैं। प्रदान किए गए एचटीएमएल नियंत्रण के क्लाइंट आईडी टैग प्राप्त करने के लिए एचटीएमएल जेनरेट कोड देखें।

<pages clientIDMode="Predictable"></pages>

अधिक जानकारी: ( https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.control.clientidmode?view=netframework-4.8)

छिपे हुए फ़ील्ड का बेहतर उपयोग करें, छिपे हुए इनपुट के रूप में प्रस्तुत करें: (https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.webcontrols.hiddenfield?view=netframework-4.8)

<asp:HiddenField id="HiddenField1" runat="server" value="1"/>
2
Javier Cañon 14 अक्टूबर 2020, 00:42