2015-06-12 18 views
5

Voglio rendere completa la percentuale (barra dei processi) che mostra la quantità di dati elaborati. Questo è il mio codice PHP:Completare la percentuale (jQuery + php)

$w->connect(); 
try { 
    $w->loginWithPassword($password); 
} 
catch (exception $e) { 
    return false; 
} 
foreach($targets as $target) 
{ 
    $w->sendMessage($target, $text); 
} 
return true; 

foreach è un processo che io voglio mostrare il numero di messaggio viene inviato. ora in js ho:

function send_message(){ 
    var msg = {msg_receptions:$('#msg_receptions').val(),msg_from:$('#msg_from').val(),msg_text: $('#msg_text').val()}; 
$.post(
     site_url('ajax/send_message'), 
     msg, 
     function(data, status){ 

     } 
     ); 
    } 

non so come fare barra di processo per mostrare la percentuale di completamento!

risposta

2

Modifica basata sui commenti.

Se si desidera tenere traccia di quanti dei messaggi sono stati caricati, è necessario eseguire un sistema di polling in una sessione corrente (si potrebbe fare con i socket, ma ciò si sta complicando).

Nel PHP, avviare una sessione (prima di caricare la prima pagina) e creare una variabile di sessione per memorizzare l'avanzamento. Nella pagina in cui scrivi, usa la stessa sessione, imposta progressivamente su 0 e ogni volta che i loop SendMessage aggiornano quella variabile con l'ultimo avanzamento.

Nel JS, inviare la richiesta PHP utilizzando AJAX (quindi l'HTML rimane) e quindi utilizzare setTimeout() per eseguire una seconda richiesta AJAX sul nuovo file che è necessario scrivere che utilizza la stessa sessione, acquisisce i dati di avanzamento aggiornati e restituisce questo - sarà uguale alla risposta iniziale. Quando si ottiene una risposta, ripetere setTimeout e ripetere (non utilizzare setInterval come si può bloccare un server che lo fa). Quando viene restituita la richiesta iniziale, elimina il timeout.

Nota finale: usare jQueryUI è eccessivo per questo; quindi usalo solo se hai altre cose per le quali lo stai usando. Altrimenti sono 10 righe di codice (sotto).

La speranza che aiuta/risponde alla domanda.

** ** risposta precedente

Il modo più semplice per farlo è di due avvolgere due div uno dentro l'altro.

Il tuo foglio di stile deve contenere:

<style> 
    .progressBar { 
     position: relative; 
     border: 1px solid black; /* Style as you see fit */ 
    } 
    .progressIndicator { 
     position: absolute; 
     left: 0; 
     top: 0; 
     width: 0; 
     height: 10%; 
     background: #f00; /* Style as you see fit */ 
    } 
</style> 

tuo HTML dovrebbe contenere

<html> 
    <div class="progressBar"> 
     <div class="progressIndicator"> 
     </div> 
    </div> 
</html> 

Javascript (jQuery) risposta dovrebbe contenere

$('.progressIndicator').css({width: parseInt(data, 10) + "%"}); 

(dove i dati vengono il valore restituito tra 0 e 100)

+0

Risposta piacevole, +1, così vicino a 10k anche;) – Darren

+0

No, non è la mia risposta. Voglio ottenere la percentuale di processo reale completa. Posso creare una barra dei processi con jquery ui. – Hamed

+0

Come in quanti dati sono stati caricati? Oppure il login richiede molto tempo e vuoi sapere fino a che punto il processo di accesso è progredito? – Robbie

Problemi correlati