2012-03-19 5 views
8

Возможно ли прочитать значение динамической переменной, например httpRequest.getSession («attr_name») из JavaScript?Может ли JavaScript прочитать объект сеанса HTTP?

+3

Если у вас есть серверный метод, который может вернуть его на вызов ajax, да. – asawyer

+0

Какой серверный язык вы используете? Как отслеживается сеанс? –

+1

Если вы имеете в виду клиентскую сторону JS: Нет. Если на вашем серверном компьютере есть среда JS, вы можете подпитывать эти параметры. Я предполагаю, что ваш серверный язык Java? – Sirko

ответ

13

(с Javascript, я предполагаю, что вы имеете в виду клиентский сценарий в браузере.)

Нет, это невозможно. Содержимое объекта Session никогда не покидает сервер, поэтому клиентский скрипт не может напрямую считывать данные сеанса.

Если вы хотите получить к нему доступ в браузере, вы должны прочитать данные из объекта Session и отправить его в ответ (например, в скрытом поле) или предоставить веб-службу, которая считывает данные из объект Session и возвращается в браузер.

+0

Вы могли бы показать резервную копию своего заявления? – FranXho

3

Как я уже сказал в своем комментарии, единственным способом может быть какой-то вызов Ajax и запросить его с сервера. Я не знаю, какой бэкэнд вы используете, вот как я буду делать это в ASP.NET MVC и 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> 

Кроме того, вы всегда можете записать необходимые значения в скрытые поля, и читать их с нормальным JavaScript ,

Смежные вопросы