Possible Duplicate:
Is Safari on iOS 6 caching $.ajax results?
I have been having a problem with session variables set via AJAX in mobile Safari iOS 6. I included a sample that will set a session variable, redirect to another page, abandon the session and start over. This works fine the first 2 times. On the third time through the process, the session variables get lost. The problem only happens in iOS 6 safari. It works in all other browsers I have tried.
The sample consists of 3 pages. Page1 sets the session variable and redirects to Page 2. Page 2 displays the session variable. Page 3 abandons the session variable.
Page 1 HTML:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="sm" runat="server" EnablePageMethods="true">
<Scripts>
<asp:ScriptReference Path="~/Page1.js" />
</Scripts>
</asp:ScriptManager>
<div onclick="setSessionVariable()">Set session variable and redirect to page 2</div>
</form>
</body>
</html>
Page 1 Javascript:
function setSessionVariable() {
PageMethods.SetSessionVariable(displaySetSessionVariable);
}
function displaySetSessionVariable(bReturn) {
window.location = "Page2.aspx";
}
Page 1 Code:
using System.Web.Services;
namespace SafariSessionProblem {
public partial class Page1 : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
}
[WebMethod]
public static Boolean SetSessionVariable() {
System.Web.HttpContext.Current.Session["TestVariable"] = 1;
return true;
}
}
}
Page 2 HTML:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="lbl" runat="server" Text="Label"></asp:Label><br /><br />
<div onclick="window.location = 'Page3.aspx'">Redirect to page 3 and abondon session</div>
</form>
</body>
</html>
Page 2 Code:
namespace SafariSessionProblem {
public partial class Page2 : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
lbl.Text = Session["TestVariable"].ToString();
}
}
}
Page 3 HTML:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div onclick="window.location = 'Page1.aspx'">Start over</div>
</form>
</body>
</html>
Page 3 Code:
namespace SafariSessionProblem {
public partial class Page3 : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
Session.Abandon();
}
}
}