2012-03-19 13 views
8

Czy jest możliwe odczytanie wartości zmiennej dynamicznej, takiej jak , httpRequest.getSession ("attr_name") z poziomu JavaScript?Czy JavaScript może odczytywać obiekt sesji HTTP?

+3

Jeśli masz metodę serwera, która może zwrócić ją do wywołania ajax, tak. – asawyer

+0

Jakiego języka używasz po stronie serwera? W jaki sposób śledzona jest sesja? –

+1

Jeśli masz na myśli JS klienta: Nie. Jeśli masz jakieś środowisko JS na maszynie serwera, możesz wprowadzić do niego te parametry. Zakładam, że twoim językiem serwera jest Java? – Sirko

Odpowiedz

13

(z JavaScript, Zakładam, że masz na myśli scenariusz klienta w przeglądarce.)

Nie, to nie jest możliwe. Zawartość obiektu Session nigdy nie opuszcza serwera, więc skrypt klienta nie może bezpośrednio odczytać danych Session.

Jeśli chcesz uzyskać do niego dostęp w przeglądarce, musisz odczytać dane z obiektu Session i wysłać je w odpowiedzi (na przykład w ukrytym polu) lub dostarczyć usługę internetową, która odczytuje dane z obiekt Session i wraca do przeglądarki.

+0

czy możesz pokazać kopię zapasową swojego wyciągu? – FranXho

3

Jak już powiedziałem w swoim komentarzu, jedynym sposobem byłby pewien rodzaj połączenia Ajax i żądanie go z serwera. Nie wiem, do czego służy backend, oto jak to zrobić w Asp.net MVC i jQuery.

(jeśli istnieją drobne błędy składniowe, przepraszam - nie przed kompilatora)

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> 

Alternatywnie, można zawsze zapisać wartości potrzebne do ukrytych pól, a następnie odczytywać je z normalnego javascript .

Powiązane problemy