2012-11-21 4 views
1

jQuery에서 세션 변수를 설정할 수 있습니까?jQuery에서 세션 액세스

jQuery에서 세션의 일부 데이터를 저장해야하며 jQuery를 통해 해당 데이터를 검색하려고합니다.

당신이 jQuery를 사용하여 클라이언트 측 세션 처리에서 찾고 있다면

$.getSession.set("var","value"); 
+1

당신이 생각하는 세션은 PHP에서 $ _SESSION과 같은 것들로 액세스되는 서버 세션으로 생각할 수 있으며 액세스 할 수있는 유일한 방법은 서버 측에 있지만 아약스를 사용하여 값을 설정하고 가져올 수 있습니다. sessionStorage라는 최신 브라우저에는 세션 저장소가 내장되어 있으며 localStorage와 마찬가지로 작동합니다. 세션이 끝나면 비게됩니다. – adeneo

+0

서버 세션 **에는 매우 중요한 데이터 **가 포함될 수 있습니다. 클라이언트 측에서 맹목적으로 콘텐츠를 게시하지 마십시오! 어떤 요구 사항이 클라이언트 측에서 세션 변수에 액세스 할 수 있는지 정당화 할 수 있습니까? 나는 더 좋은 방법이 있다는 것을 확신합니다. 실제 요구 사항을 설명 할 수 있습니까? –

+0

@Steve B : 방금 말했듯이 ** ** 포함될 수 있습니다. 기본적으로 그것은 당신이 원하는 것을 저장할 수있는 정직한 컨테이너 일뿐입니다.그러한 접근법의 적합성은 또 다른 경우입니다. – jwaliszko

답변

3

세션은 서버 측에서 액세스 할 수 있습니다. 그러나 원하는 경우 서버에 ajax 요청을 호출하고 원하는 것을 가져 오는 함수를 작성하여 세션에 액세스 할 수 있습니다.

편집 : 내가 많이 좋아하는 나는, 당신이 사용하는 ASP.NET MVC 프레임 워크를 보여주지

. 다른 프레임 워크의 아이디어는 동일합니다. 단지 서버에 대해 세션에 대해 물어보십시오.

그래서, 아래의 서버 측에서 같이하자 - 간단한 컨트롤러와 2 개 기본적인 조치가 기록됩니다

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    {    
     // store sample data 
     Session["user"] = new { name = "Anton Chigurh", age = 42 }; 
     return View(); 
    } 

    public JsonResult GetSessionValue(string key) 
    { 
     return Json(Session[key]); 
    }   
} 

은 첫째, 당신은 Index 조치를 호출하여 예를 들어, 세션에 뭔가를 저장해야합니다. 그런 다음 GetSessionValue 조치를 호출하여 이전에 저장된 값을 검색하십시오. 애플리케이션의 세션 또는 브라우저의 쿠키를 비활성화하지 않은 한 올바른 값을 가져야합니다.

값을 얻는 방법? 그냥 아약스 요청을 보내 : 당신은 동기 요청 할 것입니다 자바 스크립트 기능을 쓸 수 있습니다

  1. - 사실 약간의 시간 동안 브라우저를 고정 할 수 있습니다 (일부 계산, 네트워크 인프라 조건 등에 사용되는 서버 시간 소비에 따라 달라집니다 .) :

    function getSessionValue(key) { 
        var result; 
        $.ajax({ 
         url: "/Home/GetSessionValue", 
         type: 'POST', 
         dataType: 'json', 
         data: JSON.stringify({ key: key }), 
         contentType: 'application/json; charset=utf-8', 
         async: false 
        }).done(function (data) { 
         result = data; 
        }); 
        return result; 
    } 
    
    // invoke 
    var user = getSessionValue("user"); 
    console.log(user.name + ": " + user.age); 
    
  2. 또는 완료되면 콜백을 호출하는 비동기 버전 :

    function getSessionValue(key, callback) {  
        $.ajax({ 
         url: "/Home/GetSessionValue", 
         type: 'POST', 
         dataType: 'json', 
         data: JSON.stringify({ key: key }), 
         contentType: 'application/json; charset=utf-8',   
        }).done(function (data) { 
         callback(data); 
        }); 
    } 
    
    // invoke 
    getSessionValue("user", function(x) { 
        console.log(x.name + ": " + x.age); 
    }); 
    
,

BTW : json seriazlization을 사용했습니다. 서버와 개체를주고받을 때 선호하는 방식이기 때문에. 다른 것 - jQuery done 이벤트는 성공시에만 트리거됩니다. 서버 측에서 몇 가지 오류 (예 : catch되지 않은 예외)가 발생하면 요청은 http 500을 반환하고 이벤트는 호출되지 않습니다.

+0

안녕하세요, 답변 주셔서 감사합니다 .Jquery에서 아약스 호출을 사용하여 세션에 액세스하는 예제를 제공 할 수 있습니까? – pst

+0

원하는대로 - 업데이트했습니다. – jwaliszko

1

같은 것을 거기, 당신은 그것을위한 플러그인을해야합니다.

제가 생각할 수있는 것은 jQuery Session Plugin입니다.

+0

안녕하세요. 문자열 저장 및 Retriving에서는 괜찮지 만 Ajax 호출에서 반환 된 객체는 저장할 수 없습니다. – pst