Abrufen von Daten aus dem servlet zu ajax?
Jsp /servlets scheint zu sein, viel mehr langweilig als würde ich es erwartet habe. Ich bin versucht zu rufen, eine servlet-Funktion über ajax und tatsächlich haben Sie es füttern einige Daten wieder zurück zu meinem front-end , das ist eine jsp-Datei.
Dieser code bewirkt, dass meine Antwort als null.
Dies ist Teil meiner servlet. Ich versuche(verzweifelt, wie, ist ziemlich offensichtlich aus dem code) zu schicken, etwas - irgendetwas zurück zu ajax.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action = (String) request.getParameter("action");
if (action.equalsIgnoreCase("selectedhotel"))
{
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
System.out.println("test");
String attribute = (String) request.getParameter("hotel_id");
System.out.println(attribute);
List<Room> aRooms;
aRooms = model.getRoomByHotel(Integer.valueOf(attribute));
request.setAttribute("aRooms", aRooms);
request.setAttribute("list", list);
PrintWriter outPrintWriter = response.getWriter();
outPrintWriter.write("ASDSADA");
outPrintWriter.println("test");
}
Und ajax aus meiner JSP:
$(function(){
$("#hotelSelector li").click(function(){
var hid = $(this).attr('id');
$.ajax({ type: "GET",
url: "AppController?action=selectedhotel&hotel_id=1",
success : function(text)
{
alert(text);
//This will show the values. Change "alert" for $('div#mydiv').html(value) or so
}
});
});
});</script>
Riiight...also , bitte beheben ?
- Denken Sie an ein ajax-request als nicht anders als ein gewöhnlicher http-request als wenn Sie navigiert werden, um den Dienst in Ihrem browser, denn das ist alles, was es wirklich ist.
- Oook ? Das löst nicht wirklich mein problem hier.
- Mein Punkt ist, bauen Sie Ihre servlet, als ob es eine einfache "hello world" - web-Seite gehen Sie dann von dort. Wenn Sie nur versuchen, machen es die Ausgabe etwas, entfernen Sie alle, aber der code, dass sich die Ausgaben etwas. Sobald Sie herausfinden, wie das funktioniert, starten Sie hinzufügen zurück Stück für Stück, bis Sie finden, was scheiterte. Gibt es irgendwelche Fehler-logs, die Sie anschauen können server-Fehler? Ich bin nicht allzu vertraut mit java, so kann ich nicht wirklich viel helfen, mit möglichen code-syntax-Fragen.
- Sie versuchen könnten, schließen Sie Ihre Antwort Ausgabe-stream.
- Ja ich habe gerade gesehen, dass ich war nicht dabei. Geändert , immer noch nichts.
- Ich habe nachgedacht über das, aber dieser ist ziemlich einfach in sich selbst.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie bereits erwähnt, musst du wirklich klein anfangen und arbeiten Sie Ihren Weg nach oben. Erhalten Sie eine einfache "hello world" ajax-Antwort zu arbeiten und dann die Bewältigung der komplexer Antworten. Für die komplexeren Daten Antwort, ich würde empfehlen, sich in das json (siehe gson) serialisieren der java-Objekte um, um zurück zu senden in der Antwort-Schreiber.
Erste Sache, die Sie berücksichtigen sollten, ist die Verwendung der jQuery-post und get-Wrapper, um Ihr Leben leichter machen.
Beispielsweise Ihre html wäre wie folgt:
Auf der servlet-Seite, beginnen Sie mit ein plain-jane-servlet und sobald Sie sicher sind, dass es funktioniert, beginnen hinzufügen zusätzlichen Spielraum. Der Basis-servlet-sollte so etwas wie dieses:
Einer Weise zu senden, die eine komplexe Reaktion ist, schieben alle Ihre Daten in eine Sammlung irgendeiner Art und Nutzung gson oder einige andere JsonObjectMapper, um es in einen string konvertieren. Sie können dann legen Sie diese Zeichenfolge in der Antwort Schriftsteller und senden Sie es zurück, um analysiert zu werden durch jQuery.
EDIT:
Ich vergaß zu erwähnen, dass Sie müssen sicherstellen, dass Ihr servlet erkannt wird, indem die Ihren servlet-container sowie. Wenn Sie haven ' T Hinzugefügt die Sicherheitsbeschreibung, die die web.xml es sollte einen Eintrag wie den folgenden:
xmlhttp.responseText ist in javascript verwendet, um die Antwort von einem servlet.
wie Sie bekommen Antwort in jquery.
ich denke, dass problem ist das abrufen der Antwort