Quello che sto cercando di fare è aggiungere un'immagine di caricamento a un div (in modo che l'utente sappia che qualcosa sta caricando) e poi chiamo una funzione jquery ajax, che è impostata su "async: false". Ecco il mio codice:Arresta il blocco del browser durante l'Ajax (sincrono)?
$jQuery("#playersListDiv").html(loadingImage);
$jQuery.ajax({
type: "POST", /* this goesn't work with GET */
url: urlValue, /*ex: "NBAgetGamesList.php" */
data: parameters, /*ex: "param1=hello" */
cache: false,
async: false,
success: function(data){
}
});
Il problema è che i blocchi del browser e non aggiunge l'immagine di carico fino a dopo la chiamata AJAX è fatto che è inutile, ovviamente. Firefox è l'unico browser che aggiunge effettivamente l'immagine di caricamento. IE, Chrome e Safari NON aggiungono l'immagine di caricamento.
So che il blocco del browser si verifica perché async è impostato su false ma questa è la mia unica opzione perché devo attendere che questa richiesta venga completata prima di continuare perché ho bisogno dei dati che vengono restituiti.
C'è qualche modo per aggirare questo? Se inserisco un avviso dopo l'aggiunta dell'immagine di caricamento che funziona, non desidero che venga visualizzato un avviso ogni volta.
Synchronous, per definizione, "blocca". Il modo in cui influenzerà i browser varia, ma in genere blocca gli aggiornamenti e l'interazione del DOM. Rendilo asincrono per "risolvere" il problema. –
Perché non basta renderlo asincrono e inserire il codice dopo questo in una funzione separata. Quindi chiamare la funzione nel codice di ritorno? – Bob
"perché ho bisogno dei dati che vengono restituiti." Ecco a cosa servono i callback. Il tuo codice non deve essere lineare. – epascarello