Una petición asíncrona (
AJAX) es lo único que necesitas.
Código Javascript
:
Ver originaldocument.addEventListener("DOMContentLoaded", function(){ //DOM cargado
document.querySelector("#id del enlace").addEventListener("click", function(event){
event.preventDefault();
var ajax = new XMLHttpRequest();
ajax.open("GET", this.href, true);
ajax.send();
ajax.addEventListener("load", function(){
if (this.status == 200){
alert("Envío exitoso");
}
}, false);
}, false);
}, false);
Como la acción natural de un enlace es la de redirigir luego de darle un clic, tienes que cancelar el evento utilizando el método
.preventDefault()
; luego, instancias al objeto
XMLHttpRequest
para realizar la petición, pasándole a su método
.open()
el método de envío que en este caso será GET pues es el que utilizan los enlaces, la ruta de destino que debe contener el dato a enviar mediante una cadena de consulta, algo como
destino.php?variable=valor
y el parámetro
true
para indicar que será una petición asíncrona. Si la ruta de destino no contiene al dato a enviar, tendrás que hacerlo mediante el método
.send()
de la forma
ajax.send("variable=valor")
, pero si la ruta de destino contiene al dato a enviar, no será necesario que le asignes un argumento al método, quedando tal y como aparece en el código de ejemplo.
Finalmente, cuando se complete la petición (evento
load
), necesitas verificar si el estado de la respuesta de la petición fue exitoso, algo que se comprueba cuando la propiedad
status
del objeto
XMLHttpRequest
posee el código 200. Si esta condición se cumple, sabremos que la petición finalizó de forma exitosa y procedemos a mostrar el respectivo mensaje al usuario.
Un saludo