Vous voulez donc appeler Ajax au servlet? Pour cela, vous avez besoin de l'objet XMLHttpRequest
en JavaScript. Voici un exemple compatible Firefox:
<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>
Ceci est cependant très verbeux et pas vraiment compatible avec les navigateurs. Pour la meilleure façon compatible avec les navigateurs de lancer des requêtes ajaxiques et de parcourir l'arbre HTML DOM, je recommande de saisir jQuery. Voici une réécriture de ce qui précède dans jQuery:
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$.get('myservlet', function(data) {
alert(data);
});
</script>
Quoi qu'il en soit, le Servlet sur le serveur doit être mis en correspondance sur un url-pattern
de /myservlet
(vous pouvez le modifier à votre goût) et ont au moins doGet()
mises en œuvre et écrire le données à la réponse comme suit:
String data = "Hello World!";
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(data);
Cela devrait montrer Hello World!
dans l'alerte JavaScript.
Vous pouvez bien sûr utiliser aussi doPost()
, mais vous devez utiliser 'POST'
dans xhr.open()
ou utiliser $.post()
au lieu de $.get()
dans jQuery. Ensuite, pour afficher les données dans la page HTML, vous devez manipuler HTML DOM.Par exemple, vous avez un
<div id="data"></div>
dans le code HTML où vous souhaitez afficher les données de réponse, vous pouvez le faire au lieu de alert(data)
du 1er exemple:
document.getElementById("data").firstChild.nodeValue = data;
Dans le jQuery exemple, vous pouvez faire cela dans un plus concis et agréable façon:
$('#data').text(data);
pour aller quelques pas plus loin, vous souhaitez avoir un format de données facilement accessible pour transférer des données plus complexes. Les formats communs sont XML et JSON. Le dernier est le plus préféré car il est plus concis et peut être utilisé à la fois en Java et JavaScript de manière très simple. En Java, vous pouvez utiliser Google Gson pour convertir des objets Java complets en JSON et vice versa.
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);
En JavaScript vous pouvez utiliser jQuery de $.getJSON()
pour l'obtenir "instantanément". Montrons-le dans un <table>
.
$.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);
});
});
Voir aussi:
J'ai fait ce que vous avez dit. Mais le servlet renvoie le code html qui est à l'intérieur comme réponse. l'alerte (données) affiche le code html dans l'alerte du navigateur – Abhi
en utilisant 'POST' au lieu de' GET' travaillé. – Abhi