Newsgroup: it.comp.lang.javascript
Titolo: AJAX si addormenta?

Faccio qualche esperimento con AJAX...
Ogni tanto mi capita, nelle cose che provo online, che l'applicazione sembra 
come "addormentarsi" e rimanere in sospeso. Nel senso che nonostante vengano 
eseguite tutte le operazioni lato server, la risposta Javascript "non 
arriva". Da che può dipendere e come si può risolvere? 

 arriva". Da che può dipendere e come si può risolvere?
Se questo genere di problemi ce li hai solo in remoto (online) e non in
locale, e` molto probabile che dipende dalla latenza del server che non
hai tenuto di conto.
Dirti dove il tuo codice difetta, senza averlo visto, non e` possibile.
L'unico suggerimento "concreto" che posso darti, se gia` non lo fai, e`
di adoperare Firefox per i test, verificare l'error console cosa dice e
installarti Firebug per monitorare le varie chiamate XHR che il browser
fa, e le risposte che gli arrivano.
-- 
"When you have eliminated the impossible, whatever remains, however
improbable, must be the truth."

 fa, e le risposte che gli arrivano.
Ok facciamo un esempio.
function sendAdvice(){
 document.getElementById('advice_response').innerHTML = "Wait...";
 ------cut della definizione dei parametri------
 var url = "app_send_advice.php";
 http.open('POST', url, true);
 http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 http.setRequestHeader("Content-length", params.length);
 http.setRequestHeader("Connection", "close");
 http.onreadystatechange = sendAdviceReply;
 http.send(params);
}
function sendAdviceReply() {
 if(http.readyState == 4 && http.status == 200){
  var response = http.responseText;
  if(response == 1){
   document.getElementById('advice_response').innerHTML = "Grazie! ; )";
  } else {
   document.getElementById('advice_response').innerHTML = "Invio 
fallito!<br/><br/>"+response;
  }
 }
}
Può capitare che 'advice_response' resti su "Wait...";
: (
La console degli errori di Firefox non mi dice niente relativamente alle 
chiamate AJAX. Forse dovrei installare questo Firebug.

La prima cosa che mi salta all'occhio è che non dichiari nessun nuovo
oggetto XMLHttpRequest(); o ActiveXObject(), ma probabilmente avrai
omesso la cosa nel post..
Oltre a ciò mi pare tutto ok, potrebbe essere un problema di latenza
come ti si diceva in risposte precedenti poichè se il server non ti
risponde tutta la parte
if(http.readyState == 4 && http.status == 200){
  var response = http.responseText;
  if(response == 1){
   document.getElementById('advice_response').innerHTML =
"Grazie! ; )";
  } else {
   document.getElementById('advice_response').innerHTML = "Invio
fallito!<br/><br/>"+response;
  }
non servirà a nulla... e ti farà impallare l'applicazione...
^__^

 ha scritto nel messaggio 
news:70c26420-0d39-4dab...@r37g2000prr.googlegroups.com...



Scusa ma questo non servirà a nulla non l'ho capito. A cosa ti riferisci? 

 hai tenuto di conto.
Latenza del server? Tradotto vuol dire lentezza o ritardo? E come dovrei 
agire per gestire questo problema? Come avrete capito sono principiante :p 

 ha scritto nel messaggio 
news:bSsal.155679$Ca.2...@twister2.libero.it...

E se fosse un problema di readyState dell'oggetto?
Ovvero che l'oggetto venisse invocato mentre sta eseguendo un'altra 
operazione?
Una soluzione del genere potrebbe funzionare?
if((http.readyState == 4) || (http.readyState == 0)){
  http.open('POST', url, true);
  ...resto della chiamata...
}else ripetiFunzioneChiamata();
Il fatto è che non mi pare sia un problema del genere, e tra l'altro è 
abbastanza raro... 

 }else ripetiFunzioneChiamata();
No, forse dovrebbe essere
if((http.readyState != 2) && (http.readyState != 3)){ 

 ha scritto nel messaggio 
news:CWOal.244115$FR.5...@twister1.libero.it...

no, non va perché chiamo la funzione prima di averla finita di definire..... 
: \ 

 ha scritto nel messaggio 
news:U_Oal.244120$FR.5...@twister1.libero.it...

Pardon ho detto una scemenza, avevo sbagliato un'altra cosa. Funzionare 
funziona... ma è quello che serve? 

 Forse dovrei installare questo Firebug.
Si, te l'ho suggerito proprio per monitorare le chiamate http.


 agire per gestire questo problema?
E` una "classe" di problemi, non uno solo. :)
Come avrete capito sono principiante :p
Non preoccuparti, il newsgroup serve appunto a questo.
