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