Newsgroup: it.comp.lang.javascript
Titolo: ajax e output prima della fine dello script

Ciao a tutti
Ho già cercato ma senza successo, anche se penso sia già stata chiesta
la cosa.
Uso queste mie funzioni per fare le chiamate ajax
http://xoomer.alice.it/azzo666/ng1/ajax.js
.
Se faccio delle chiamate sincrone non mi viene eseguita nessun
istruzione prima che la chiamata sia finita (mi serve ad esempio per
mandare fuori un avviso di attesa dati). Invece se faccio un alert
prima della chiamata mi vengono visualizzate le istruzioni.
Come posso fare?
Grazie
--
Andrea

 Come posso fare?
Scusa, ma non mi e' ben chiara la domanda.
Se fai una richiesta sincrona per definizione lo script non prosegue 
finche' la richiesta non e' completata: quindi ti direi di farla 
asincrona o di fare comparire l'avviso prima di effettuare la chiamata.
Ma probabilmente non ti ho capito, in caso prova a spiegare meglio la 
situazione.

 finche' la richiesta non e' completata:
Mi sono spiegato male. Chiaramete se è sincrona lo script non
prosegue. Ti faccio un esempio. Alla pressione di un  tasto richiamo
un ajax. Prima di eseguire la chiamata alla funzione ajax vera e
propria, ne richiamo un'altra che mi visualizza un messaggio
"caricamento in corso". Quest'ultimo messaggio però non lo vedo a
video come mi sarei aspettato, ma mi compare solo dopo che l'ajax ha
eseguito le sue operazioni. Se però metto un alert tra il messaggio e
la chiamata ajax, succede che il messaggio compare, compare l'alert e
poi viene eseguito l'ajax.
Posso farti un esempio al limite.
Grazie
--
Andrea

 poi viene eseguito l'ajax.
ovvio: non dai "respiro" al browser...quando visualizza il caricamento in
corso anziché chiamare subito la tua function ajax attendi (basta un
setTimeout di 1 ms):
 
http://developer.mozilla.org/en/docs/DOM:window.setTimeout
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.

 setTimeout di 1 ms):
Ah.. da ora vuol dire che lo farò respirare un po'.
Grassie!
--
Andrea

 Ah.. da ora vuol dire che lo farò respirare un po'.
Per farti chiarezza sulla metafora del "respirare":
Quando esegui del codice javascript, il browser demanda il controllo
allo script engine; fino che questo non glielo restituisce.
E' uno dei motivi per cui le richieste sincrone si tende a evitarle,
in quanto congelano il browser anche nelle operazioni di repaint.
Se provi a fare una richiesta sincrona che impiega un paio di minuti
nel ricevere risposta, ti sembrerà che il browser sia "crashato" (in
quanto non risponde più).
Nel tuo caso, inoltre, sarebbe più indicata una richiesta asincrona,
piuttosto che cercare accroccri (che possono anche essere applicati,
ma in situazioni diverse e abbastanza estreme) come il setTimeout.
-- 
~ Se i miei cattivi pensieri non fossero caricati a salve, ogni giorno
sarebbe una strage.

ma in situazioni diverse e abbastanza estreme) come il setTimeout.
Ciao.
Usare setTimeout per una cosa come il loading mi sembra proprio
uno snaturare XHtmlRequest imho.
Mi spiego che senso ha ritardare una una response
if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
//Aspetta che devo far vedere il loading !!!!!!!!!
}
Siete d'accordo ?

> Siete d'accordo ?
Ma l'hai letto tutto il 3d?