NetPerformance
Erfahrenes Mitglied
Hallo Zusammen,
ich versuche mal mein das Problem so genau wie möglich zu schildern.
Die fertige Seite sieht folgendermaßen aus:
Der Anwender kann innerhalb der Eingabefelder neue Gästebuch-Einträge vornehmen. Diese werden via jQuery bzw. Ajax an ein Servlet gesendet. Das Servlet nimmt die Daten entgegen und speichert diese innerhalb der Datenbank ab. Soweit ist alle suppi.
Anschließend sollen die Einträge (ohne dass ich die Seite neu lade) angezeigt werden. Und genau das kann ich noch nicht realisieren! Momentan werden die Einträge erst angezeigt, nachdem ich die Seite neu geladen habe.
Wichtige Dateien:
Bei der „view“ handelt es sich um die Datei content.jsp . Diese JSP wird via Tiles-Definition eingefügt (sollte aber egal sein).
Die JS-Datei „default.js“ beinhaltet das selbst geschriebene JS.
Der „controller“ wird durch die Servlet-Klasse GuestbookController.java repräsentiert.
Ablauf:
Die JSP-Datei „content.jsp“ wird beim Laden der Seite aufgerufen. Die JSP beinhaltet das JS. Dabei wird innerhalb von „$(document).ready(function() {…“ das Servlet aufgerufen.
Der Controller bzw. das Servlet liest alle Gästebuch-Einträge aus der DB aus und senden diese als Response zurück.
Die folgende JS-Passage ist für das Versende des Eintrags an das Servlet zuständig:
Ich möchte das die Einträge gleich angezeigt werden und nicht erst nachdem ich die Seite neu geladen habe!
Was muss ich machen, damit die Einträge gleich angezeigt werden (via Ajax)? bzw. Was die Schlagwörter, wonach ich suchen sollte?
Ich bedanke mich im Vorraus,
Aaron
ich versuche mal mein das Problem so genau wie möglich zu schildern.
Die fertige Seite sieht folgendermaßen aus:
Der Anwender kann innerhalb der Eingabefelder neue Gästebuch-Einträge vornehmen. Diese werden via jQuery bzw. Ajax an ein Servlet gesendet. Das Servlet nimmt die Daten entgegen und speichert diese innerhalb der Datenbank ab. Soweit ist alle suppi.
Anschließend sollen die Einträge (ohne dass ich die Seite neu lade) angezeigt werden. Und genau das kann ich noch nicht realisieren! Momentan werden die Einträge erst angezeigt, nachdem ich die Seite neu geladen habe.
Wichtige Dateien:
Bei der „view“ handelt es sich um die Datei content.jsp . Diese JSP wird via Tiles-Definition eingefügt (sollte aber egal sein).
Die JS-Datei „default.js“ beinhaltet das selbst geschriebene JS.
Der „controller“ wird durch die Servlet-Klasse GuestbookController.java repräsentiert.
Ablauf:
Die JSP-Datei „content.jsp“ wird beim Laden der Seite aufgerufen. Die JSP beinhaltet das JS. Dabei wird innerhalb von „$(document).ready(function() {…“ das Servlet aufgerufen.
Code:
Code:
$(document).ready(function() {
$.get("/Guestbook/GuestbookController?action=getEntries", function(data) {
// muss ich hier eventuell auf das Reponse warten?
});
...
Der Controller bzw. das Servlet liest alle Gästebuch-Einträge aus der DB aus und senden diese als Response zurück.
Code:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action = (String) request.getParameter("action");
if(isValidString(action) && action.equals("getEntries")) {
try {
request.getSession().setAttribute("entries", databaseConnector.getEntries());
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Die folgende JS-Passage ist für das Versende des Eintrags an das Servlet zuständig:
Code:
$("#sendButton").click(function(){
var entryName = $("#entryName").val();
var entryEmail = $("#entryEmail").val();
var entryHomepage = $("#entryHomepage").val();
var entryMessage = $("#entryMessage").val();
$.ajax({
url: "GuestbookController",
type: "POST",
async: true,
data: {
entryName: entryName,
entryEmail: entryEmail,
entryHomepage: entryHomepage,
entryMessage: entryMessage
},
success: function () {
// mmhh..
}
});
});
Ich möchte das die Einträge gleich angezeigt werden und nicht erst nachdem ich die Seite neu geladen habe!
Was muss ich machen, damit die Einträge gleich angezeigt werden (via Ajax)? bzw. Was die Schlagwörter, wonach ich suchen sollte?
Ich bedanke mich im Vorraus,
Aaron