Foro sobre Java EE > Carrito con javascript
No estoy muy puesto en como hacerlo pero lo que sí se es como funciona, ajax hace la llamada y lo que tienes que hacer en el servlet no es guarlos datos en la session sino generar tu código HTML que ajax insertará en la sección de tu página HTML que tu le digas, en tu caso cambiar un número, sin recargar la página.
Ejemplito básico:
http://www.w3schools.com/jquery/jquery_ajax_load.asp
Lo que debes hacer es hacer una llamada AJAX a un Servlet que te devuelva la información del carro. Una forma más útil a mi parecer, es crear una simple API REST que te permita realizar las operaciones (Agregar al carro, Eliminar del carro, Obtener info del carro), desde donde puedes obtener toda la info del carro en formato JSON como por ejemplo, cantidad de productos, datos de los mismos (id, nombre, precio, etc). Por ejemplo:
@GET
@Path("/infoCarro")
@Produces(MediaType.APPLICATION_JSON)
public Response infoCarro() {
List<Producto> productos = /* obtienes la lista de productos del carro mediante un DAO */
return Response.status(Status.ACCEPTED).entity(new GenericEntity<List<Producto>>(productos) {}).build();
}
Y en el cliente:
$.ajax({
url: "http://tuweb/api/infoCarro",
type: "get"
dataType: "json"
})
.success(function(data)) {
var products = data.responseJSON;
$('.carro').find('.numProductos').text(Object.keys(products).length);
})
.fail(function(data)){
// manejo de errores
});
Y tendrías todo en tiempo real.
Buenas estoy implementando un carrito de articulos y quiero conseguir que al pulsar "AÑADIR A CARRITO" aparezca el numero de articulos que tengo en el carrito hasta el momento por ejemplo CARRITO(5 articulos). El codigo es el siguiente:
$(document).ready(function() {
$('#submit').click(function(event) {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'ArticuloACarrito?art=149', false);
xhr.send(null);
location.reload();
});
});
Aqui llamo al servlet que se encarga de añadir el articulo al carrito y almacenarlo en una variable de session llamada "carrito" que contiene un Arraylist<Articulo,cantidad>. Seguidamente recargo la misma pagina desde la que se hace la peticion al servidor para que actualize el numero de articulos que hay actualmente en el carrito. Esto lo realizo de la siguiente manera:
JSP
<p>Carrito( <%= (Carrito)session.getAttribute("carrito").getarticulos().size() %> )</p>
El problema es que para que se muestre correctamente el numero de articulos que hay en el carrito actualmente tengo que recargar la pagina manualmente. Con la recarga automática de javascript no recupera la variable de sesión correctamente.
Muchas gracias