Sto usando un jax con jQuery sul mio sito e devo mostrare un indicatore di avanzamento/caricamento.Indicatore di caricamento su Ajax sincrono
Il mio dilemma è questo:
- sincrono AJAX blocca il browser, in modo da non posso fare nulla (ad esempio, mostrano un indicatore di carico) fino i contenuti vengono restituiti, quando ormai è troppo tardi
- I sto usando JSON come il tipo di dati di ritorno e l'impostazione asincrone = true restituisce una stringa vuota risposta
- tutto il mio quadro si basa sul tipo di ritorno essendo formato JSON
non riesco trovare un modo per far sì che JS fornisca all'utente l'indicazione che qualcosa è in corso, tranne che per fare un avviso(). (Per qualche motivo un avviso funziona).
Qualche suggerimento?
Il mio codice:
JS
var jqXHR = $.ajax(
{
type: "POST",
url: url,
cache: false,
data: params, // array of parameters
async: false, // responseText is empty if set to true
dataType: 'json',
error: function()
{
alert("Ajax post request to the following script failed: " + url);
}
});
var html = jqXHR.responseText;
PHP
$return = array();
$return['status'] = 1;
$return['message'] = "some html here ...";
echo json_encode($return);
grazie per il suggerimento Ho provato questo, tuttavia ottengo un testo di risposta vuoto come il resto del codice sembra funzionare, tenta di afferrare il testo di risposta da una funzione ajax che non è ancora stata eseguita, e fallisce. sfortunatamente non è pratico impostare setTimeout su tutto il mio altro codice, poiché il codice che afferra la rispostaText è in tutto il sistema ... –
beh, ho finito per usare un timeout e applicare patch a tutto il mio codice, e funziona bene. quindi grazie per avermi dato un pungolo per farmi arrivare (voterei, ma non ho abbastanza punti reputazione!) –
Grazie! Funziona ... – maverabil