Sie möchten also Ajax Aufrufe an das Servlet auslösen? Dazu benötigen Sie das Objekt XMLHttpRequest
in JavaScript. Hier ist ein Firefox-kompatibles Beispiel:
<script>
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var data = xhr.responseText;
alert(data);
}
}
xhr.open('GET', 'myservlet', true);
xhr.send(null);
</script>
Dies ist jedoch sehr ausführlich und nicht wirklich Crossbrowser kompatibel. Für die beste Crossbrowser-kompatible Methode zum Auslösen von ajaxischen Anfragen und zum Durchqueren des HTML-DOM-Baums empfehle ich, nach jQuery zu greifen. Hier ist eine Neufassung der oben in jQuery:
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$.get('myservlet', function(data) {
alert(data);
});
</script>
So oder so, die Servlet auf dem Server sollte auf eine url-pattern
von /myservlet
abgebildet wird (Sie können dies nach Ihrem Geschmack ändern) und haben mindestens doGet()
umgesetzt und schreibt die Daten auf die Antwort wie folgt:
String data = "Hello World!";
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(data);
Diese Hello World!
in der JavaScript-alert zeigen.
Sie können natürlich auch doPost()
verwenden, aber dann sollten Sie 'POST'
in xhr.open()
verwenden oder $.post()
anstelle von $.get()
in jQuery. Um die Daten auf der HTML-Seite anzuzeigen, müssen Sie HTML DOM bearbeiten.Zum Beispiel haben Sie eine
<div id="data"></div>
im HTML, wo Sie möchten, dass die Antwortdaten angezeigt werden, dann kann man so statt alert(data)
des 1. Beispiel tun:
document.getElementById("data").firstChild.nodeValue = data;
Im jQuery Beispiel könnten Sie dies tun, in einer prägnanten und netten Art:
$('#data').text(data);
einige Schritte um weiter zu gehen, möchten Sie ein einfach zugängliches Datenformat haben komplexere Daten zu übertragen. Gängige Formate sind XML und JSON. Das letzte ist am meisten bevorzugt, da es prägnanter ist und auf sehr einfache Weise sowohl in Java als auch in JavaScript verwendet werden kann. In Java können Sie Google Gson verwenden, um vollwertige Java-Objekte in JSON und umgekehrt zu konvertieren.
List<Product> products = productDAO.list(); // Product is just a Javabean with properties `id`, `name` and `description`.
String json = new Gson().toJson(products);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
In JavaScript können Sie jQuery verwenden $.getJSON()
es zu bekommen "sofort". Lassen Sie es in einem <table>
anzeigen.
$.getJSON('myservlet', function(data) {
var table = $('<table>').appendTo($('#data'));
$.each(data, function(i, product) {
var row = $('<tr>').appendTo(table);
$('<td>').text(product.id).appendTo(row);
$('<td>').text(product.name).appendTo(row);
$('<td>').text(product.description).appendTo(row);
});
});
Siehe auch:
Ich habe getan, was du gesagt hast. Aber das Servlet gibt den HTML-Code zurück, der darin als Antwort enthalten ist. die Warnung (Daten) zeigt HTML-Code in der Warnung des Browsers – Abhi
mit 'POST' anstelle von' GET' gearbeitet. – Abhi