Domanda

Come conservare i valori nella sessione utilizzando jQuery. Sto usando il seguente codice

var Link = '<%=Session["Link"]%>';

per ottenere i dati dalla sessione. Come fare il processo inverso.

Problema:

 I need this in my master page. so i cant use .ajax{}.

Geetha

È stato utile?

Soluzione

Si avrà probabilmente bisogno di creare un HTTP handler o qualcosa simile che accetterà le richieste e le cose memorizzare nella sessione. Visual Studio ha questo da qualche parte nelle "Aggiungi" menu nella visualizzazione soluzione. (Se si sta utilizzando ASP.NET MVC, è sufficiente impostare un'altra azione al posto di un gestore generico.)

Dato che tali valori verranno possono avere diversi tipi (int, stringa, ecc) e dal momento che non si desidera che gli utenti malintenzionati che colpiscono a qualsiasi chiave di sessione meglio credono, probabilmente si vuole impostare un ramo per stabilire cosa fare con ogni tasto. Qualcosa di simile (all'interno del gestore che si è creato):

string key = context.Request.QueryString["key"].ToString();
string val = context.Request.QueryString["val"].ToString();
if(key == "AshDiffuserID"){
  int ash_diffuser_id = Convert.ToInt32(val);
  Session["AshDiffuserID"] = ash_diffuser_id;
}
else if(key == "PesterchumHandle") {
  string handle = val;
  Session["PesterchumHandle"] = handle;
} else // etc...

Dopo di che, è necessario impostare un richiesta HTTP POST tramite jQuery che mette qualunque valori necessari in quelle "chiave" ei campi "val".

$.post(
  'url/to/your/handler.ashx',
  {key: "PesterchumHandle", val: "carcinoGenetecist"}
); 

Altri suggerimenti

Ho sprecato la mia giornata di risolvere questo problema, mentre questo è solo una soluzione rapida. Durante PageMethod chiamata, ID di sessione non viene superata con richiesta URL, in modo da evento nuovo session_start è essere stato licenziato. Abbiamo solo bisogno di impostare esatto percorso di richiesta prima di chiamare un PageMethod, in modo che il nuovo evento di avvio della sessione non può essere licenziato.

if ('<%= HttpContext.Current.Session.IsCookieless %>==True') {
//need to pass session id in request path
PageMethods.set_path('<%= System.Web.Configuration.WebConfigurationManager.AppSettings("WebRoot") %>(S(<%=Session.SessionID%>))/secure/PageName.aspx');
}
PageMethods.PageMethodName(param1,param2, CallSuccess, CallFailed);

Sarà necessario fare un posto ajax al server tramite jQuery.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top