Newsgroup: it.comp.lang.javascript
Titolo: Ajax - Consigli

Ciao a tutti innanzi tutto e felice programmazione!
Ho da qualche tempo iniziato ad utilizzare ajax e piano piano comincio a 
capire qualcosa.
Mi sono creato il codice che riporto qua sotto e vorrei avere commenti e 
soprattutto consigli sul come ottimizzarlo ed utilizzarlo al meglio.
Grazie a tutti in anticipo.
Max
Codice:
===================================================================
/*
 descrizione funzioni:
 -----------------------------------------------
 - assegnaXMLHttpRequest()
   funzione per assegnare l'oggetto XMLHttpRequest
   ad uso interno delle prossime funzioni
 -----------------------------------------------
 - getContent(f,id,f2)
   richiama la pagina "f" mette il risultato nel
   div "id" e subito dopo richiama la funzione "f2" (opzionale)
   Parametri:
   f pagina da richiamare
    es: "getlist.php" o "getlisti.php?p1=aaa"
   id id del div su cui mettere l'output di ritorno
    es: "elenco"
   f2 nome funzione da richiamare al completamento
    es: "sistematutto()"
 -----------------------------------------------
 - passContent(f,f2,oc)
   richiama la pagina "f" e restituisce il risultato
   alla funzione "f2" passando come secondo parametro "oc"
   Parametri:
   f pagina da richiamare
    es: "getlist.php" o "getlisti.php?p1=aaa"
   f2 nome funzione da richiamare al completamento
    es: "ricevuto()"
    la funzione ricevuto() dovra' accettare due parametri:
      il primo sara' il contenuto di ritorno
      il secondo riporterà il parametro "oc"
   oc parametro opzionale restituito a "f2"
 -----------------------------------------------
*/
//
function assegnaXMLHttpRequest() {
 var XHR = null;  // variabile di ritorno, nulla di default
 var browserUtente = navigator.userAgent.toUpperCase();
 if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === 
"object") {
  XHR = new XMLHttpRequest();
 } else if(window.ActiveXObject  && browserUtente.indexOf("MSIE 4") < 0 ) {
  if(browserUtente.indexOf("MSIE 5") < 0) {
   XHR = new ActiveXObject("Msxml2.XMLHTTP");
  } else {
   XHR = new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
 return XHR;
}
function getContent(f,id,f2) {
 var ajax = assegnaXMLHttpRequest();
 var ajax2 = assegnaXMLHttpRequest();
 if(ajax) {
  document.getElementById(id).innerHTML = "<font 
style='font-family:Arial,Verdana;font-size:10px;color:blue;'>... loading 
...</font>";
  ajax.open("get", f, true);
  ajax.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 
GMT" );
  ajax.setRequestHeader("connection", "close");
  ajax.onreadystatechange = function() {
   if(ajax.readyState === 4) {
    if(ajax.status == 200) {
     document.getElementById(id).innerHTML = ajax.responseText;
     if(f2) {
      eval(f2);
     }
    } else {
     alert("Operazione fallita, errore numero " + ajax.status);
    }
   }
  }
  ajax.send(null);
 }
}
function passContent(f,f2,oc) {
 var ajax = assegnaXMLHttpRequest();
 var ajax2 = assegnaXMLHttpRequest();
 if(ajax) {
  ajax.open("get", f, true);
  ajax.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 
GMT" );
  ajax.setRequestHeader("connection", "close");
  ajax.onreadystatechange = function() {
   if(ajax.readyState === 4) {
    if(ajax.status == 200) {
     if(f2) {
      eval(f2.replace("()","")+"(ajax.responseText,'"+oc+"')");
     }
    } else {
     alert("Operazione fallita, errore numero " + ajax.status);
    }
   }
  }
  ajax.send(null);
 }
}
===================================================================

       alert("Operazione fallita, errore numero " + ajax.status);
Se lavori server side, la quasi totalita` delle volte avrai un 500,
come status, quindi poco indicativo come "numero di errore".
Via, e` stato un bel messaggione lungo, spero ne sia valsa la pena,
e che ti sia quindi di aiuto. :)
-- 
"When you have eliminated the impossible, whatever remains, however
improbable, must be the truth."


[cut]
Non mi soffermo sui singoli punti che sono troppi.
Comunque e' stato molto piu' di quanto mi potevo aspettare come aiuto.
Mi ci andra' un po' a leggermi tutti i links e capire a fondo, ma i concetti 
(veramente tanti) che mi hai esposto sono gia' abbastanza chiari anche se 
mettendoci mani trovero' sicuramente altri dubbi spero piu' "attuali". Ti 
ringrazio davvero tanto.
...Vediamo cosa riesco a combinare...
Grazie
Max