Although JavaScript is client side code with an AJAX call you can set or update a session variable on the server when client side code fires.
In my case I couldn't do a post back, since I could not have a form on the page, so I needed to do a reload.  I still needed the values from the page, which reload does not preserve.  Because it is a reload it shouldn't preserve those values, but for my purpose I needed one of them.
What I ended up doing was using JQuery to make an AJAX call to a handler page.
Once the AJAX call returns then I call the reload.  The code looks similar to this:
    $.ajax(
    {
        cache: false,
        url: sURL,
        datatype: "html"
    }).done(function (data) {
        if (data != "") alert(data);
        //alert("Should reload");
        window.location.href = window.location;
        window.location.reload(true);
    })
         .fail(function (xhr, ajaxOptions, thrownError) {
             alert("fail");
             alert(thrownError);
         });
sURL is the address of the handler page.  You will need to pass a parameter to the handler page to tell it that you want to call the routine in the handler that sets the session variable.  The handler code in ASP.NET with C# would look like this:
static HttpContext _context;
    public void ProcessRequest(HttpContext context)
    {
          string retval = "";
          _context = context;
          switch (context.Request["method"])
          {
                case "SetSession":
        Session[context.Request["SessionVarName"])]
 = context.Request["SessionValue"])
                       break;
                default:
                       context.Response.ContentType = "text/plain";
                       retval = "Invalid method specified";
                       break;
          }
          context.Response.Write(retval);
    }
    
 
No comments:
Post a Comment