Visualizzazione dei risultati da 1 a 8 su 8

Discussione: immagine loading....

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    residenza
    Brescia
    Messaggi
    81

    immagine loading....

    Ho un piccolo problema, ma non capisco cosa o dove sbaglio....

    Sto lavorando molto con ajax ed è velocissimo, capita però che a volte (credo a causa del provider che ospita il tutto) ci metta 1 o 2 secondi a rispondere.

    Onde evitare che gli utenti continuino infinitamente a cliccare perchè non vedo una risposta immediata, ho pensato di visualizzare un'immagine ogni qualvolta ci sia questa benedetta richiesta ajax.
    Ho creato un'immagine in un div nascosto (id="attendi"), lo visualizzo prima di lanciare la richiesta ajax, e lo nascondo quando ho la risposta....
    Il problema è che non va... l'immagine (mi pare di capire) viene visualizzata e nascosta nello stesso momento in cui lo script di richiesta ajax finisce.
    Cosa e/o dove sbaglio ? Consigli o chiarimenti ?

    Ho pensato alla fine anche metterci quel
    codice:
    while(!attendi(1)) { }
    ma alla fine non cambia nulla..... bo !!!!!!

    Il codice completo (o quasi):

    codice:
    function leggimessaggio(id,tipo,oggetto,idmitt) {
        while(!attendi(1)) { }
        var ajaxresponse = xmlHttpPost_ajax(id,urlbase+'/ajax/messageread.php');
        if(strpos(ajaxresponse,"ERR->>AJAX ERROR")) alert(ajaxresponse);
        else {
               ... bla bla bla ....
                attendi(0);
        }
    }
    
    function attendi(i) {
    	if(i==0) document.getElementById("attendi").style.display="none";
    	else if(i==1) document.getElementById("attendi").style.display="inline";
    	return true;
    }
    Grazie a chiunqe saprà darmi qualche dritta... sono gia 4 ore che mi ci perdo !!!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Io quando voglio mostrare una gif attesa lo faccio quando lancio la chiamata Ajax
    Function ajax(){
    Mostro oggetto immagine
    ..... Elaborazione ......
    if(ResponseText){ Nascondo oggetto immagine e mostro i risultati}
    }
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    residenza
    Brescia
    Messaggi
    81
    è quello che ho fatto in effetti.... comincia a venirmi il dubbio che il problema siala chiamata sincrona....

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Se la chiamata è sincrona è normale, ma normalmente si usa la asincrona
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2002
    residenza
    Brescia
    Messaggi
    81
    in questo caso mi era comoda la chiamata sincrona in modo da attendere forzatamente la risposta, ma sto facedo delle prove con l'asincrona...

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2002
    residenza
    Brescia
    Messaggi
    81
    In effetti era prorio quello......
    con "qualche" modifica sto sistemando tutto con chiamate asincrone.



    Adesso mi è venuto in mente del perchè avevo lavorato con chiamate sincrone....
    Ho nel sito un refresh di alcuni parametri ogni 20 secondi con ajax asincrono.

    Il problema nasce quando sia il refresh automatico che la chiamata con click che sto facendo si sovrappongono.... accade un disastro nella risposta.....

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2002
    residenza
    Brescia
    Messaggi
    81
    Ho risolto così... non sarà il massimo ma funziona....
    Ogni qualvolta avvio una chiamata ajax setto una variabile ajaxcall=1 per indicare che c'è gia una richiesta incorso.... ed in questo caso riprovo una volta ogni secondo fino a che la chiamata no è terminata resettando il flag ajaxcall.
    Se qualcuno ha soluzioni migliori sono ben accette

    codice:
    var ajaxcall=0;
    
    function ajaxupdate() {
    	if(ajaxcall) { setTimeout(ajaxupdate(),1000); }
    	else {
    		ajaxcall=1;
    		xmlHttpPost_info ('INFO',urlbase+'/ajax/info.php');
    	}
    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2002
    residenza
    Brescia
    Messaggi
    81
    ho scoperto di essere un grandissimo pirla.....
    istanziavo 3 oggetti ajax con lo stesso nome..... e si incriccava tutto...
    ora chissà come mai non ho più alcun problema....


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.