Loading di attesa

  • Creatore Discussione Creatore Discussione Vera
  • Data di inizio Data di inizio

Vera

Utente Attivo
3 Giu 2014
76
1
8
Buongiorno

ho uno scipt in javascript della serie (in sintesi per la mia problematica):

Codice:
$('#dialog').html(msg);
            $('#dialog').dialog(
            {
                modal: true,
                title: title_path,
                width:  auto,
                height: auto,
                buttons: 
                {
                    'scrivi Excel' : function()
                    {
                           location.href = "folder02/excel.php?a0="+a0;
                    },
                    "Esci": function() 
                    {
                        $(this).dialog("close");   
                    }
                }

l'istruzione location.href chiama un php che mi estrapola dei dati dal mio database e mi scrive un file excel. Fin qui tutto bene. Il problema é che vorrei poter inserire, quando vado a pigiare il tasto "Scrivi Excel", la classica rotellina di attesa fin quando non viene scritto definitivamente il file excel. O rotellina o qualsiasi altra immagine che mi mette in attesa, cioé non mi consente di fare altro.

Chi mi da una mano?
Grazie
 
Ciao, puoi provare a scrivere queste istruzioni nella pagina excel.php
HTML:
<script>
document.write("<p id='attesa'>Attendere o gif animata</p>");
window.onload = function() {
   document.getElementById("attesa").style.display = "hidden";
}
</script>
Ho scritto direttamente qui nel box, potrebbero esserci errori di sintassi, prova.
 
Ho provato a mettere il tuo suggerimento in più punto del mio php ma con esito negativo.
Neanche il semplice alert('pippo'); funaziona. Alert che ho messo all'inizio del tuo script:

Codice:
<script>
alert('pippo');
document.write("<p id='attesa'>Attendere o gif animata</p>");
window.onload = function() {
   document.getElementById("attesa").style.display = "hidden";
}
</script>
 
mmm , molto strano, hai un esempio online o uno completo da postare per provarlo ?
 
Ricapitolando:

questo é lo script che chiama il php

Codice:
$('#dialog').html(msg);
            $('#dialog').dialog(
            {
                modal: true,
                title: title_path,
                width:  auto,
                height: auto,
                buttons: 
                {
                    'scrivi Excel' : function()
                    {
                           location.href = "folder02/excel.php?a0="+a0;
                    },
                    "Esci": function() 
                    {
                        $(this).dialog("close");   
                    }
                }


il relativo php (excel.php) dove al suo interno chiamo la funzione per la lettura dei record dal database...

PHP:
$code = $_GET['a0'];

$filename = "mioExcel.xls";
header ("Content-Type: application/vnd.ms-excel");
header ("Content-Disposition: inline; filename=$filename");

// Funzione di lettura del database
include('libphp/preparaDati.php');

// Tabella di costruzione del mio Excel (in sintesi....)
<div> 
<table border='1' ........

// Connessione per il database e chiamata alla funzione di caricamento dei dati letti dal db

$start = db2_connect(............);
 
$array01= preparaDati($start, $code);
  
     // Ciclo for lettura array di ritorno
     for($j = 0; $j<count($array01); $j++)

etc... etc... etc....

funziona tutto ma non so dove intervenire per poter integrare il codice con il Loading di attesa fin quando non é scritto completamente l'excel

Grazie
 
Puoi modificare la funzione scrivi excel in questo modo
Codice:
scrivi Excel': function ()
    {
         $('#dialog').append("<p>Attendi caricamento in corso</p>");
         location.href = "folder02/excel.php?a0="+a0;
    },
e se vuoi al posto della scritta puoi inserire una gif animata
 
OK,

cosi mi parte l'attesa:

Codice:
{
         $('#dialog').append("<p>Attendi caricamento in corso</p>");
         location.href = "folder02/excel.php?a0="+a0;
},


o meglio (con una gif animata ad esempio una rotellina che gira)


Codice:
{
         $('#dialog').append(StartLoading()); 
         location.href = "folder02/excel.php?a0="+a0;
},


ma, ti chiedo, come fermo la stessa gif animata quando é finito il caricamento del file excel. O meglio dove scrivo questa nuova ricga di codice che ferma la mia gif animata?

$('#dialog').append(StopLoading());


grazie
per il tuo aiuto.

Vera
 
Non credo sia possibile intercettare il completamento della pagina php dal browser.
Potresti provare intercettando la perdita del focus della pagina chiamante.
Codice:
 window.onblur = function() {
        StopLoading()
    }
devi però verificare che la funzione non faccia casino se perdi il focus per qualche altro motivo
 
Si,
ho provato ad inserire il codice dopo le due istruzioni

Codice:
$('#dialog').append("<p>Attendi caricamento in corso</p>");
         location.href = "folder02/excel.php?a0="+a0;

....  window.onblur = function() {
        StopLoading()
    }

sembra andare bene.

Grazie per il tuo aiuto.

Vera
 

Discussioni simili