Teniendo el típico formulario de
edición/detalle de un registro donde se pueden guardar los cambios o borrar el registro de la base de datos -
pues sí que planteo un caso geńerico- se me antoja bastante usable el redirigir a otra página en caso de que el usuario desee eliminar:
/* Borrando asiento */
function borra(id)
{
if(confirm("¿Seguro que deseas borrar #" + id + "?"))
{
$.ajax
({
type: 'POST',
url: 'ajax.php',
data: 'id='+id+'&accion=borra',
dataType: 'html',
error: function() {
alert ( "Error" );
},
success: function(html) {
window.location.replace("/");
}
});
}
}
El asunto está en el
window.location.replace, que hará la redirección sin quejarse. Obviamente se trata de mezclar Javascript con JQuery, ¿alguien tiene algo mejor?.
Comentarios
Es menos complicado, o igual no :D pero construir una URL desde javascript... me queda feo.
Es eso, ¿no? :D
success: function(html) {
$("#id_de_la_capa_del_registro_X").slideUp("slow").hide();
}
o remove() si quieres quitarlo del DOM también por lo que sea. Opciones, opciones, muchas opciones con jQuery :D
@MarcosBL: Si, es lo que se suele hacer, eliminar en vista listado, pero me ha resultado curiosa la nueva situación. Aunque entiendo que en vista detalle lo lógico es, o no borrar, o hacerlo sin usar AJAX. Al ser algo excepcional por eso he pensado que merecía una entrada barra recordatorio :P
disculpa por ser pesado ;)
un saludo
daniel
error: function() {
alert ( "Error" );
},
success: function(html) {
[removed].replace(html);
...
Creo que esta puede ser una buena solucion, así puedes construir desde php la url y te evitas manejar dom. Opino que manejar el dom puede ser mejor, pero más costoso de programar.
otra opcion:
success:
$(#id-tabla).parent().load(loquesea.php#id-tabla);
Es una segunda llamada ajax que sustituye el html de la tabla antigua por la nueva sin ese registro. De nuevo, menos eficiente, pero también menos costoso de programar.