Erste Session-Daten in Ajax-call
Hallo, ich bin der Abfrage der Datenbank zu laden, werden alle Elemente basierend auf bestimmten Kriterien, und setzen dieses Ergebnis in der Sitzung als
data = service.getData();
session.setAttribute("data", data);
jetzt versuche ich den Zugriff auf diese Daten über einen Ajax-Aufruf und mein Ajax-call wird serviert von einem anderen servlet dann eher dem Abruf der Daten von der DB.
Ajax-call mit jquery
$.ajax({
type: "POST",
url: "/com/tp/AjaxXML.jsp",
data: ({cmd: "report"}),
dataType: "xml",
success: function(xml) {
$(xml).find('site').each(function(){
var url = $(this).attr('url');
});
}
});
in meinem AjaxXML.jsp
Mache ich
if("report".equals(cmd)){
List<Object> data = (List<Object>)request.getSession().getAttribute("data");
if(data == null){
System.out.println("data is null ");
}
}
jedes mal, wenn ich erhalte die Daten als null, über den Ajax-Aufruf wie auch immer ich versuchen, Zugriff auf die session-Daten werden normalerweise von mein erstes servlet funktioniert es.
könnte jemand lassen Sie mich wissen, wenn ich etwas falsch?
Ich bemerkte eine Sache, wenn wir session.getId();
und pageContext.getSession().getId();
beide sind der Rückgabe unterschiedliche Id ' s? Ist diese erwartete zu mir, Sie sollte dasselbe sein, das jeder Verschieden auf?
ich denke rest des Codes ist unerheblich, ich möchte nur wissen, ob wir Zugriff auf die Daten festlegen, die in der Sitzung über einen ajax-call?
Ja, Sie können das tun.
Versuchen Sie, mit
request.getSession(false)
im zweiten Fall.Möchten Sie vielleicht check this out: stackoverflow.com/questions/5619277/...
InformationsquelleAutor dpsdce | 2011-12-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, Sie sollte definitiv nicht unterscheiden. Ich jedoch davon ausgehen, dass Sie geprüft haben Sie innerhalb der gleichen Anfrage. Wenn Sie untersucht Sie in verschiedenen Anfragen, dann wird der Unterschied erklärt sich durch das fehlen der richtigen JSESSIONID cookie. Cookies sind domain-und kontextspezifisch. Sie sind offenbar das senden der ajax-request auf eine andere domain/Kontext. Der führende Schrägstrich
/
in die ajax-URL auch bestätigt dies mehr oder weniger. Stellen Sie sicher, dass Sie senden Sie es an die gleichen domain/Kontext. Verwenden Sie eine Kontext-relative URL, so etwas wie wieurl: "AjaxXML.jsp"
und verschieben Sie den code, um die gleiche domain/Kontext, oder aktivieren Sie session sharing zwischen verschiedenen Kontexten auf server-Ebene.Unabhängigen zu dem konkreten problem, das tun die Ajax-response-Verarbeitung in einer JSP ist eine schlechte Idee. Lieber tun Sie es in ein servlet.
Ersetzen
durch
und setzen Sie den code in
doPost()
- Methode des servlet zugeordnet ist, die auf das URL-Muster.Siehe auch:
InformationsquelleAutor BalusC