Pregunta

Con este código me puede mostrar un gif animado, mientras que el script del servidor se está ejecutando:

function calculateTotals() {
    $('#results').load('getResults.php', null, showStatusFinished);
    showLoadStatus();
}

function showLoadStatus() {
    $('#status').html('');
}


function showStatusFinished() {
    $('#status').html('Finished.');
}

Sin embargo, me gustaría mostrar un estado de cuán lejos a lo largo de la secuencia de comandos es, por ejemplo,"Línea de procesamiento 342 de 20000..." y tienen que contar hasta que se termine.

¿Cómo puedo hacer eso?Puedo hacer un server script que constantemente se contiene la información actualizada, pero cuando pongo el comando para leer esto, dicen, cada segundo?

¿Fue útil?

Solución

Después de leer sus comentarios a Andrew de la respuesta.

Usted podría leer el estado como este:

function getStatus() {
    $.getJSON("/status.php",{"session":0, "requestID":12345}, 
    function(data) { //data is the returned JSON object from the server {name:"value"}
          setStatus(data.status);
          window.setTimeout("getStatus()",intervalInMS)
    });
}

Usando este método, usted puede abrir simultánea de varios XHR solicitud en el servidor.

todos sus status.php en cuanto a la salida es :

{"status":"We are done row 1040/45983459"}

Usted puede, sin embargo, la salida de la mayor cantidad de información que desee en la respuesta y el proceso de consecuencia (la alimentación de una barra de progreso, por ejemplo, o la realización de una animación..)

Para obtener más información sobre $.getJSON ver http://docs.jquery.com/Ajax/jQuery.getJSON

Otros consejos

No estoy abajo con los detalles para jQuery, sino una respuesta general, que no implica la votación sería:Utilizar una variación de la marco para siempre técnica.Básicamente, crear un iframe oculto, y establecer el src de ser 'getresults.php'.Dentro de getresults que el "flujo" de vuelta bloques de secuencia de comandos, que son las llamadas a un javascrpt función en el documento principal que actualiza el progreso.Aquí un ejemplo que muestra la idea básica detrás de un marco para siempre.(Yo no recomendaría el uso de su real JS o HTML, sin embargo, es razonable)

Su script del lado del servidor de alguna manera deben mantener su progreso en algún lugar en el servidor (archivo, campo en la base de datos, memcached, etc.).

Usted debe tener AJAX función de devolución de progreso actual.Encuesta de esta función una vez por segundo y el resultado del render en consecuencia.

Sin saber cómo su lado del servidor código funciona, es difícil de decir.Sin embargo, hay tres etapas en el proceso.En primer lugar usted necesita para llamar a una secuencia de comandos de creación de empleo.Esto devuelve un número de identificación y se establece el servidor de trabajo.Después, cada segundo más o menos, usted necesita llamar a un estado de script que devuelve un mensaje de estado que desea mostrar.Que el estado de la secuencia de comandos también debe devolver un valor que indica si el trabajo se ha terminado o no.Cuando el estado script dice que el trabajo ha terminado de dejar de votación.

La forma de conseguir este estado de la secuencia de comandos es conocer el estado del trabajo depende en gran medida de cómo el servidor está configurado, pero probablemente es la redacción de un mensaje a una tabla de base de datos en varios puntos durante el trabajo.El estado de la secuencia de comandos, a continuación, lee este mensaje a partir de la base de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top