Как читать значения сеанса с помощью jQuery - PullRequest
3 голосов
/ 13 января 2011

Я использую c # и jQuery.

У меня есть код ниже, где я устанавливаю переменную сеанса, используя код C #.

if (!string.IsNullOrEmpty(results))
{
    string[] array = results.Split(',');
    string firstName = array[0];
    string lastName = array[1];
    string activeCardNo = array[2];
    string memberShipTier = array[3];
    string accessToken = array[4];

    Session["skyFirstName"] = firstName.ToString();
    Session["skyLastName"] = lastName.ToString();
    Session["skyActiveCardNo"] = activeCardNo.ToString();
    Session["skyMemberShipTier"] = memberShipTier.ToString();
    Session["boolSignOn"] = "true";
    Response.Redirect(fromPage);
    Response.End();
}

Теперь я хочу прочитать эти значения (Session["skyFirstName"]) использование jQuery, чтобы я мог установить свои элементы.Пожалуйста, предложите.

Ответы [ 4 ]

6 голосов
/ 13 января 2011

Значения сеанса хранятся на сервере, и их невозможно прочитать с помощью клиентского JavaScript.Одним из способов достижения этого было бы предоставить некоторый серверный сценарий или универсальный обработчик, который возвращал бы соответствующее значение сеанса с данным ключом, а затем использовал бы jQuery для отправки запроса AJAX этому обработчику и чтения значения.Вы должны знать, что, делая это, пользователь может прочитать все значения сеанса.Имейте в виду, что использование одного и того же сценария для записи значений сеанса может быть катастрофическим с точки зрения безопасности.

Вот пример:

public class ReadSession : IHttpHandler, IReadOnlySessionState
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "application/json";
        context.Response.Write(new JavaScriptSerializer().Serialize(new
        {
            Key = context.Request["key"],
            Value = context.Session[context.Request["key"]]
        }));
    }

    public bool IsReusable 
    { 
        get { return true; } 
    }
}

, а затем запросите его:

$.getJSON('/ReadSession.ashx', { key: 'skyFirstName' }, function(result) {
    alert(result.Value);
});
1 голос
/ 13 января 2011

Вы не можете получить доступ к переменным сеанса с помощью JavaScript, так как переменные сеанса находятся на стороне сервера, а не на стороне клиента.

Одна из работ, о которой уже упоминалось, - это использование ajax, чтобы позволить javascript взаимодействовать со стороной сервера. Это хорошо, но, возможно, слишком сложно для того, что вам нужно.

Другое, более простое решение - вывести переменные сеанса в скрытые поля ввода или в виде переменных javascript в тегах сценария, к которым затем можно получить доступ с помощью javascript.

1 голос
/ 13 января 2011

jquery запускается на клиенте, который не может напрямую получить доступ к значениям сеанса на стороне сервера.Одним из решений является предоставление веб-службы, которая возвращает эти значения, и использование веб-службы, а другое - включить значения в ответе страницы как JSON (например) и получить к ним доступ на клиенте.

0 голосов
/ 13 января 2011

jQuery - это javascript, поэтому для того, чтобы эти переменные были доступны, вам необходимо распечатать html-код (по крайней мере, один тег сценария), где вы устанавливаете переменные сеанса считывания из C # в качестве переменной javascript.

Альтернативой может быть использование ajax-запроса для получения переменных сеанса из серверного скрипта.

...