Una forma es usar los controladores HTTP y AJAX con jQuery.
1. Iniciar petición del lado del servidor
$("#btnCreateInvoice").click(function() {
$.ajax({ type: "POST", url: "YourHttpHandler.ashx",
contentType: "text/html; charset=utf-8",
dataType: "html",
success: function(data) { start the block UI }
});
});
2. Sondeo
Lo siguiente que hay que hacer es consultar al servidor a intervalos 't' y obtener el estado. Para eso tenemos que llamar a una función en el intervalo 't' que iniciaría una llamada AJAX a un HTTPHandler para obtener el estado.
$(function() {
setInterval(updateStatus, 't');
});
function updateStatus() {
$.ajax({ type: "POST", url: "GetStatusHandler.ashx",
contentType: "text/html; charset=utf-8",
dataType: "html",
success: function(data) { process 'data' here and update the block UI message box }
});
}
En el caso aquí, el GetStatusHandler.ashx puede devolver el innerHtml completa para el estado. Por ejemplo, en el primer llamarlo volverá 'Cargando Primera fuente ...', entonces podría volver:
Loding Primera fuente ...
Cargando segunda fuente ...
y así sucesivamente.
C#, Java, PHP ... etc.? –
mi servidor es C#, pero supongo que la respuesta no tendría ninguna diferencia dado el idioma del back end diferente – leora
La respuesta puede depender de -> ¿La 'tarea larga ejecución' se ejecuta del lado del cliente o del servidor? –