2011-08-16 13 views
9

Ho la seguente jQuery Ajax chiamata:Display 'carico' immagine quando AJAX chiamata è in corso

$.ajax({ 
        type: "POST", 
        url: "addtobasket.php", 
        data: "sid=<?= $sid ?>&itemid=" + itemid + "&boxsize=" + boxsize + "&ext=" + extraval, 
        success: function(msg){ 
        $.post("preorderbasket.php", { sid: "<?= $sid ?>", type: "pre" }, 
        function(data){ 
         $('.preorder').empty(); 
         $('.preorder').append(data); 
        }); 
        } 
       }); 

voglio visualizzare un'immagine quando la chiamata AJAX è in corso. Come lo posso fare?

Grazie,

+0

possibile duplicato di [Mostra immagine di caricamento mentre $ .ajax viene eseguito] (http://stackoverflow.com/questions/4684722/show-loading-image-while-ajax-is-performed) – AXMIM

risposta

27

provare questo:

<script type="text/javascript"> 
    $(document).ready(function() 
    { 
     $('#loading') 
      .hide() 
      .ajaxStart(function() { 
       $(this).show(); 
      }) 
      .ajaxStop(function() { 
       $(this).hide(); 
      }); 
    }); 
</script> 

<div id="loading"> 
     Loading.... 
</div> 

Questo mostrerà l'immagine di caricamento ogni volta che stai facendo una richiesta di ajax, ho impiantato questo div in cima alle mie pagine, quindi non ostruisce la pagina, ma puoi sempre vedere quando una chiamata ajax sta andando sopra.

+3

Nota questo mostrerà il div di caricamento quando * qualsiasi * richiesta di ajax è in corso. –

1

È possibile visualizzare l'immagine appena prima di questa chiamata a $ .ajax() e poi nascondere/rimuovere l'immagine nella funzione posta gestore (appena prima del tuo .empty() /. Append (dati) chiama

5

Qualcosa in questo senso (showLoadingImage e hideLoadingImage sono fino a voi):.

// show the loading image before calling ajax. 
showLoadingImage(); 

$.ajax({ 
    // url, type, etc. go here 
    success: function() { 
     // handle success. this only fires if the call was successful. 
    }, 
    error: function() { 
     // handle error. this only fires if the call was unsuccessful. 
    }, 
    complete: function() { 
     // no matter the result, complete will fire, so it's a good place 
     // to do the non-conditional stuff, like hiding a loading image. 

     hideLoadingImage(); 
    } 
}); 
+4

C'è anche un parametro beforeSend nell'oggetto Ajax –