Sto facendo un sito utilizzando ajax per le pagine dinamiche.
Ho seguito il corso di ajax su html.it e fin qui tutto bene.
Il mio problema riguarda l'ottimizzazione del codice scritto, volta ad eliminare il
maggiorn numero di righe ripetute.
Mi spiego meglio.
Ad ogni richiesta di ajax devo scrivere:
//------------------------------------------------------------------------------
var respObj;
function callAjax(){
ajaxObj = assegnaXMLHttpRequest();
if (ajaxObj) {
ajax.open("post", "miapagina.asp", true);
ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("connection", "close");
ajax.onreadystatechange = function() {
if(ajax.readyState == readyState.COMPLETATO) {
if(statusText[ajaxObj.status] == "OK"){
//elaborazione risposta server
var respTxt = ajaxObj.responseText;
return respTxt; //caso num.1--->NON FUNZIONA
respObj = respTxt; //caso num.2--->NON FUNZIONA
document.getElementById('div_id').innerHTML=respTx t;//caso num.3--->FUNZIONA
}
}
}
}
}
//------------------------------------------------------------------------------
In pratica mi piacerebbe che ad ogni invocazione, la funzione callAjax() potesse ritornare un oggetto opportunamente valorizzato, ma ciò non risulta possibile in quanto l'espressione return obj; non da esiti positivi a causa del fatto che è racchiusa all'interno di un altra funzione (... ajax.onreadystatechange = function() ...).
Sembra che l'unica possibilità che ajax offre all'utente sia quella di valorizzare un elemento della pagina html su cui è invocato e questo rende il metodo ajax callAjax() utilizzabile solo dalla pagina su cui viene invocato (vedi caso num.1 e 2), e ciò mi costringe a farne altri simili per ogni pagina del sito.
Possibile che con tutto il successo avuto da sto benedetto ajax non sia possibile una migliore gestione del codice?

Rispondi quotando