Ajax no refresca

Me voy a extender un poco para una mejor comprensión:
Tengo una JSP "A" donde tiene varios input y botones. Dígito la clave del registro y hago click en el botón buscar. Con eso paso a una función en javascripts y que permite enviar la clave del registro a través de ajax a otra JSP "B". En esta JSP, llamo las funciones de búsqueda ("select ... Bla, bla) que están en una clases java.
Al tener éxito la búsqueda, la secuencia sigue en la JSP "B" y aquí construyo una variable (sFrase) concatenando los campos y separándolos con una coma (,). Esta variable me llega a la JSP "A" a través del ajax. ResponseText. (Ajax es el nombre de una variable).
Esta respuesta la paso a un array (aValor = cCadena.split(",")), entonces obtengo por cada item el valor del campo de la tabla.
Y después se visualizan en los input correspondientes. Hasta aquí todo funciona muy bien. Si la clave no existe, visualizo el mensaje correspondiente.
Ahora cuando tengo el registro correspondiente hago click en un botón para eliminar. Esto llama a otra función en javascripts y SIN AJAX, voy a otra JSP "C", la cual llama a las funciones de borrado y finaliza mostrando una ventana según sea el caso (Éxito o Fracaso). Como yo sé que el registro se puede eliminar, el mensaje dice Éxito.
Sigo en la JSP "A" y dígito la misma clave y sorpresa ¡El registro existe!.
Extrañado voy a la base de datos con mi manejador externo y consulto el registro y efectivamente ¡Esta eliminado!, es decir el proceso está bien.
Salgo de la aplicación y vuelvo a entrar, voy a la JSP "A", dígito la clave y sale el mensaje que dice "Registro No existe".
Después de darle cientos de vueltas, hice otra JSP "D". Voy a la JSP "A", busco otro registro, lo elimino, vuelvo a la JSP "A" busco el registro y lo muestra. Paso a la JSP "D" busco el registro y NO EXISTE.
Resumiendo la JSP "A" tiene ajax y la JSP "D" no tiene ajax.
Conclusión: ALGO RARO HACE AJAX.
NOTA: El proceso de eliminación lo hace bien.

1 respuesta

Respuesta
1
Mi primera impresión es que el navegador está usando la caché del navegador para recuperar la página B (que creo que es la que dice si el objeto existe o no).
Haz una prueba deshabiltando la cache de la página:
response.setDateHeader ("Expires", 0);
response.setHeader ("Pragma", "no-cache");
if (request.getProtocol().equals ("HTTP/1.1")) {
  response.setHeader ("Cache-Control", "no-cache");
}
O lo que es lo mismo:
<META HTTP-EQUIV="Expires" CONTENT="-1">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
Quizás con eso elimines el problema. Eso suponiendo que el problema no sea que la eliminación como tal no sea "delete", si no hacer una actualización de la tabla (un flag a "borrado" por ejemplo) y que en una página hagas una consulta "select" y en otra, otro... que puede pasar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas