Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [AJAX]Mostrare loading durante il caricamento

    Salve gente sto sviluppando un'applicazione su facebook e al momento per includere alcuni file utilizzo questa fuzione:

    Codice PHP:
    function General_Refresh(url,div){
      var 
    ajax = new Ajax();
      
    ajax.responseType Ajax.FBML;
      
    ajax.ondone = function(data) {
      
    document.getElementById(div).setInnerFBML(data);
      }
    ajax.post(url);

    In pratica fornisco l'url e l'id del livello e la funzione quando viene eseguita mi carica il file in quel livello. Il problema e che in alcuni casi il caricamente dura 2-3 secondi e nel frattempo io vorrei far uscire la scritta Loading (oppure un'immagine).

    Ultima cosa ogni tanto ho notato che non viene caricato il file nel livello, e inoltre a me personalmente mi crasha spesso e volentieri firefox quando viene fatta la richiesta (ad alcuni miei amici a cui ho chiesto di provare non è mai successo) ma questo penso sia dovuto al fatto che uso un'altra funzione per far aggiornare un livello ogni 5 min.

    Grazie in anticipo

  2. #2
    per il loading: il trucco sta nel mostrare/nascondere l'avviso del caricamento in momenti stabiliti

    per il problema del mancato caricamento: spesso le chiamate su fb vanno in errore, e l'errore va gestito

    codice:
    function General_Refresh(url,div){ 
      // l'utente ha appena premuto il pulsante: mostro la scritta loading
      var ajax = new Ajax(); 
      ajax.responseType = Ajax.FBML; 
      ajax.ondone = function(data) { 
        // e' stata ricevuta la risposta relativa alla chiamata: nascondo la scritta loading
        document.getElementById(div).setInnerFBML(data); 
      } 
      
      // gestione dell'errore
      ajax.onerror = function() {
        // codice da eseguire, che puo' essere o un avviso all'utente, o un nuovo tentativo di caricamento:
        General_Refresh(url,div)
      }
    ajax.post(url); 
    }

    (il codice non e' stato verificato)

    facci sapere
    danno

  3. #3
    Grazie mille ^^ funziona benissimo . Ecco il codice finale per chi è interesssato
    Codice PHP:
    function General_Refresh(url,div){
      
    document.getElementById(div).setInnerXHTML('<span id="caric"><center>[img]http://www.youtdomain.com/load.gif[/img]</center></span>');    
      var 
    ajax = new Ajax();
      
    ajax.responseType Ajax.FBML;
      
    ajax.ondone = function(data) {
      
    document.getElementById('caric').setStyle('display','none'); 
      
    document.getElementById(div).setInnerFBML(data);
      }
      
    ajax.onerror = function() {
        
    General_Refresh(url,div);
      }
    ajax.post(url);

    Ovviamente non ho potuto testare a fondo la parte onerror, ma comunque credo funzioni . Per quanto rigurda invece il crash tengo a precisare che il codice che uso per caricare il livello ogni 5 min è questo:

    Codice PHP:

    function partRefresh(){
      
    //Carico il loading
      
    document.getElementById('partId').setInnerXHTML('<span id="caric"><center>[img]http://www.narutofansubber.it/public/Naruto Ge-mu/images/loadm.gif[/img]</center></span>');    
      var 
    ajax = new Ajax();
      
    ajax.responseType Ajax.FBML;
      
      
    ajax.ondone = function(data) {
      
    //Una volta caricato faccio scomparire l'immagine, carico il file, e faccio partire la funzione
      
    document.getElementById('caric').setStyle('display','none'); 
      
    document.getElementById('partId').setInnerFBML(data);
      
    setTimeout(function(){partRefresh()},900000); // Making time delay
      
    }
      
    //Se c'è un'errore la ripeto
      
    ajax.onerror = function() {
        
    partRefresh();
      }
      
    ajax.post("mydomain.com");

    PS Non sarebbe più sicuro creare un contatore degli errori che se per esempio arriva a 5 tentativi di caricamento smette di caricare onerror la funzione ?

  4. #4
    PS Non sarebbe più sicuro creare un contatore degli errori che se per esempio arriva a 5 tentativi di caricamento smette di caricare onerror la funzione ?
    assolutamente si, anzi magari anche impostare un "ritardo" nell'eseguire un nuovo tentativo utilizzando setTimeout()
    se no poi, altro che crash

    ciao
    danno

  5. #5
    Grazie del consiglio ho provveduto a cambiare:



    Codice PHP:
    var  gf 0;

    function 
    General_Refresh(url,div){
      
    document.getElementById(div).setInnerXHTML('<span id="caric"><center>[img]http://www.narutofansubber.it/public/Naruto Ge-mu/images/load.gif[/img]</center></span>');    
      var 
    ajax = new Ajax();
      
    ajax.responseType Ajax.FBML;
      
    ajax.ondone = function(data) {
      
    document.getElementById('caric').setStyle('display','none'); 
      
    document.getElementById(div).setInnerFBML(data);
      }
      
    ajax.onerror = function() {
       if(
    gf == 5){
       }else{
       
    setTimeout(function(){General_Refresh(url,div)},4); 
       
    gf++;
       }
      }
    ajax.post(url);


  6. #6
    domanda: sto sviluppando un sito php, e vi è una pagina che fa un export di dati in xls e richiede qualche minuto (in quanto effettua numerose query). come potrei utilizzare il codice che avete utilizzato per definire un "loading" durante il caricamento della pagina php?

    grazie mille

    esempio

    dopo la pressione del pulsante, il sistema carica la pagina (export.php) , durante il caricamento compare il loading che fa attendere l'utente.

  7. #7
    si purchè usi l'ajax per caricare in un livello la pagina

  8. #8
    Info:
    General_Refresh(url,div) che parametri devo specificare? URL è la pagina che viene caricata durante il loading? e div?

  9. #9
    div il nome del livello. esempio <div id="ciao"></div> il nome sarà ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.