क्या एक गतिशील चर के मान को httpRequest.getSession ("attr_name") जावास्क्रिप्ट के भीतर से पढ़ना संभव है?जावास्क्रिप्ट HTTP सत्र ऑब्जेक्ट पढ़ सकता है?
उत्तर
(जावास्क्रिप्ट के साथ, मुझे लगता है कि आप ब्राउज़र में ग्राहक स्क्रिप्ट मतलब है।)
नहीं, यह संभव नहीं है। सत्र ऑब्जेक्ट की सामग्री सर्वर को कभी नहीं छोड़ती है, इसलिए क्लाइंट स्क्रिप्ट सीधे सत्र डेटा नहीं पढ़ सकता है।
यदि आप ब्राउज़र में इसे एक्सेस करना चाहते हैं, तो आपको सत्र ऑब्जेक्ट से डेटा को पढ़ना होगा और इसे प्रतिक्रिया में भेजना होगा (उदाहरण के लिए एक छिपे हुए क्षेत्र में), या एक वेब सेवा प्रदान करें जो डेटा को पढ़ती है सत्र ऑब्जेक्ट और ब्राउज़र पर लौटता है।
क्या आप अपने कथन के लिए कुछ बैकअप दिखा सकते हैं? – FranXho
जैसा कि मैंने अपनी टिप्पणी में कहा था, एकमात्र तरीका अजाक्स कॉल का एकमात्र तरीका होगा और सर्वर से अनुरोध करेगा। मैं नहीं जानता कि आपके उपयोग का बैकएंड क्या है, यहां मैं एएसपीनेट एमवीसी और jQuery में ऐसा कैसे करूंगा।
(वहाँ मामूली वाक्यविन्यास त्रुटियों कर रहे हैं, मैं माफी माँगता हूँ - एक संकलक के सामने नहीं)
public class HomeController : Controller
{
//abstract the session code away, don't let the evil javascript touch
//it directly. Ideally this would all be in a seperate logic class or something.
public string NameAttribute
{
get
{
return Session["attr_name"] as string ?? string.empty;
}
}
[HttpGet]
public string GetNameAttribute()
{
return NameAttribute;
}
public ActionResult Index()
{
return View();
}
}
<script>
$(function(){
$.get('home/GetNameAttribute', function(response) {
var name = response; //don't forget error checking, ommited
});
});
</script>
वैकल्पिक रूप से, आप हमेशा मूल्यों आप छिपा क्षेत्रों में जरूरत नीचे लिख सकता है, और उन्हें सामान्य जावास्क्रिप्ट के साथ पठित ।
यदि आपके पास एक सर्वर विधि है जो इसे AJAX कॉल पर वापस कर सकती है, हाँ। – asawyer
आप किस सर्वर-साइड भाषा का उपयोग कर रहे हैं? सत्र को कैसे ट्रैक किया जा रहा है? –
यदि आपका मतलब क्लाइंट साइड जेएस: नहीं है। यदि आपके सर्वर मशीन पर कुछ जेएस पर्यावरण है तो आप इसमें उन पैरामीटर को खिला सकते हैं। मुझे लगता है कि आपकी सर्वर भाषा जावा है? – Sirko