Visualizzazione dei risultati da 1 a 10 su 10

Hybrid View

  1. #1
    Una chiamata Ajax è asincrona, quindi vuol dire che una volta che l'hai inviata al server (tramite il metodo send) puoi fare altre cose in attesa che finisca (nel metodo onreadystatechange).

    Quindi l'idea potrebbe essere dopo la send visualizza un loader e sul onreadystatechange nascondi il loader.

    Se stai imparando ti conviene dare un'occhiata a JQuery che ti semplifica molto la vita.
    Ad esempio il codice sopra usando jquery diventa:

    $.post(url, dati_del_form, function(result){
    // qui faccio quello che voglio con il risultato.
    });

    Tutto diventa più semplice.

  2. #2
    Quote Originariamente inviata da calculus Visualizza il messaggio
    $.post(url, dati_del_form, function(result){
    // qui faccio quello che voglio con il risultato.
    });

    Tutto diventa più semplice.

    hahahahaha si semplicissimo, con una libreria alle spalle per 4 righe di codice..


    tornando in topic,
    potresti inserire una gif negli stati della chiamata.. tipo:
    Codice PHP:
    if (self.xmlHttpReq.readyState == 0) {
      
    document.getElementById'loader' ).appendChildtuaGifLoader );

    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Quote Originariamente inviata da Al_katraz984 Visualizza il messaggio
    hahahahaha si semplicissimo, con una libreria alle spalle per 4 righe di codice..


    tornando in topic,
    potresti inserire una gif negli stati della chiamata.. tipo:
    Codice PHP:
    if (self.xmlHttpReq.readyState == 0) {
      
    document.getElementById'loader' ).appendChildtuaGifLoader );

    grazie mille ora il problema è... come lo spengo??

  4. #4
    Quote Originariamente inviata da Al_katraz984 Visualizza il messaggio
    hahahahaha si semplicissimo, con una libreria alle spalle per 4 righe di codice..


    tornando in topic,
    potresti inserire una gif negli stati della chiamata.. tipo:
    Codice PHP:
    if (self.xmlHttpReq.readyState == 0) {
      
    document.getElementById'loader' ).appendChildtuaGifLoader );

    grazie mille ora il problema è... come lo spengo??

  5. #5
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    codice:
    var xmlhttpPost = (function () {
    
        function reqListener () {
            alert(this.responseText);
            oWait.parentNode && oWait.parentNode.removeChild(oWait);
        }
    
        function reqError (oEvent) {
            alert("C\'\u00E8 stato un errore durante la chiamata AJAX.");
            oWait.parentNode && oWait.parentNode.removeChild(oWait);
        }
    
        var oWait = document.createElement("div");
    
        /* "oWait" e' un div... ci puoi mettere dentro tutto quello che ti pare... */
        oWait.appendChild(document.createTextNode("Attendi..."));
    
        return function (sURL) {
            var oReq = new XMLHttpRequest();
            oReq.onload = reqListener;
            oReq.onerror = reqError;
            oReq.open("GET", sURL, true);
            oReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            oReq.send(recuperaValore());
            oWait.parentNode || document.body.appendChild(oWait);
    
        };
    
    })();
    Tutto ciò che fai con jQuery puoi farlo meglio e con la metà del codice in puro JavaScript.

  6. #6
    Quote Originariamente inviata da carlomarx Visualizza il messaggio
    codice:
    var xmlhttpPost = (function () {
    
        function reqListener () {
            alert(this.responseText);
            oWait.parentNode && oWait.parentNode.removeChild(oWait);
        }
    
        function reqError (oEvent) {
            alert("C\'\u00E8 stato un errore durante la chiamata AJAX.");
            oWait.parentNode && oWait.parentNode.removeChild(oWait);
        }
    
        var oWait = document.createElement("div");
    
        /* "oWait" e' un div... ci puoi mettere dentro tutto quello che ti pare... */
        oWait.appendChild(document.createTextNode("Attendi..."));
    
        return function (sURL) {
            var oReq = new XMLHttpRequest();
            oReq.onload = reqListener;
            oReq.onerror = reqError;
            oReq.open("GET", sURL, true);
            oReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            oReq.send(recuperaValore());
            oWait.parentNode || document.body.appendChild(oWait);
    
        };
    
    })();
    non mi è chiaro, devo eliminare il mio codice e sostituirlo con quello oppure devo aggiungerlo al mio?
    ho provato in tutti e due i modi ma niente non va, o meglio funziona ma la scritta attendi alla fine non va via


    via //Se lo stato è completo
    if (self.xmlHttpReq.readyState == 4) {

    document.getElementById( 'loader' ).removeChild( tuaGif );

    /* Aggiorno la pagina con la risposta ritornata dalla precendete richiesta dal web server.Quando la richiesta è terminata il responso della richiesta è disponibie come responseText.*/
    aggiornaPagina(self.xmlHttpReq.responseText);
    }
    non so perchè ma non funziona neanche quast'altra soluzione potreste farmi un esempio concreto?
    grazie mille =)

  7. #7
    up

  8. #8
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Quote Originariamente inviata da againhere Visualizza il messaggio
    non mi è chiaro, devo eliminare il mio codice e sostituirlo con quello oppure devo aggiungerlo al mio?
    ho provato in tutti e due i modi ma niente non va, o meglio funziona ma la scritta attendi alla fine non va via
    creati un file chiamato "testo.txt", inseriscilo nella stessa cartella della pagina che ti allego. Scrivici dentro "Ciao mondo".

    pagina.html
    :
    codice:
    <!doctype html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Esempio</title>
    <script type="text/javascript">
    function recuperaValore () {
        /* non conosco lo scopo di questa funzione... di conseguenza... */
        return "tizio=caio&ciao=mondo";
    }
    
    var xmlhttpPost = (function () {
    
        function reqListener () {
            alert(this.responseText);
            oWait.parentNode && oWait.parentNode.removeChild(oWait);
        }
    
        function reqError (oEvent) {
            alert("C\'\u00E8 stato un errore durante la chiamata AJAX.");
            oWait.parentNode && oWait.parentNode.removeChild(oWait);
        }
    
        var oWait = document.createElement("div");
    
        /* "oWait" e' un div... ci puoi mettere dentro tutto quello che ti pare... */
        oWait.appendChild(document.createTextNode("Attendi..."));
    
        return function (sURL) {
            var oReq = new XMLHttpRequest();
            oReq.onload = reqListener;
            oReq.onerror = reqError;
            oReq.open("GET", sURL, true);
            oReq.send(recuperaValore());
            oWait.parentNode || document.body.appendChild(oWait);
    
        };
    
    })();
    </script>
    </head>
    
    <body>
    <p><span style="color: #0000ff; text-decoration: underline; cursor: pointer;" onclick="xmlhttpPost('testo.txt');">Clicca qui</span></p>
    </body>
    </html>
    Tutto ciò che fai con jQuery puoi farlo meglio e con la metà del codice in puro JavaScript.

  9. #9
    Quote Originariamente inviata da againhere Visualizza il messaggio
    grazie mille ora il problema è... come lo spengo??
    quando arrivi qui:
    Codice PHP:
    //Se lo stato è completo 
    if (self.xmlHttpReq.readyState == 4) {

    document.getElementById'loader' ).removeChildtuaGif );

    /* Aggiorno la pagina con la risposta ritornata dalla precendete richiesta dal web server.Quando la richiesta è terminata il responso della richiesta è disponibie come responseText.*/
    aggiornaPagina(self.xmlHttpReq.responseText);

    rimuovi la gif
    Questa volta, più che un voto.. è favoreggiamento.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.