Salve a tutti
ho un problema... devo caricare una serie di combo che sono dipendenti tra loro, ma quando nel codice js richiamo in sequenza le funzioni che mediante ajax mi caricano le combo, ottengo il caricamento solo dell'ultima combo specificata.
esempio: schema gerarchico dell'azienda: prima combo "direzione" dovrebbe aggiornare le combo "servizio" e "ufficio" mi aggiorna solo l'ufficio vi posto il codice.
la chiamata alla funzione js CompilaUffDir è sull'evento onChange della combo direnzione
Spero di essere stata chiara, altrimenti chiedetemi pure.
grazie mille per l'aiuto
ho un problema... devo caricare una serie di combo che sono dipendenti tra loro, ma quando nel codice js richiamo in sequenza le funzioni che mediante ajax mi caricano le combo, ottengo il caricamento solo dell'ultima combo specificata.
esempio: schema gerarchico dell'azienda: prima combo "direzione" dovrebbe aggiornare le combo "servizio" e "ufficio" mi aggiorna solo l'ufficio vi posto il codice.
Codice:
// -- FUNZIONI DI UTILITA'' AJAX --
function getRequestObject() {
var xmlreq = false;
//Controllo il tipo di oggetto XMLHttpRequest da utilizzare
if(window.XMLHttpRequest){
//Per browser non Microsoft
xmlreq = new XMLHttpRequest();
}else if(window.ActiveXObject){
//Cerco di creare l''oggetto via MS ActiveX
try{
//Nuove versioni per browser IE
xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e1){ //Errore riscontrato durante la creazione dell''oggetto
try{
//Precedenti versioni per browser IE
xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e2){ //Nuovo errore durante la creazione dell''oggetto
xmlreq = false;
}
}
}
//Restituisco l''eventuale oggetto XMLHttpRequest
return xmlreq;
}
function sendRequest(method, url, params) {
httpDispatcher.open(method, (url + "?" + params));
httpDispatcher.onreadystatechange = handleResponse;
httpDispatcher.send(null);
}
function handleResponse() {
// ricevo la risposta dal server
if (httpDispatcher.readyState == 4) {
var response = httpDispatcher.responseText;
// debug: mostro la risposta della chiamata AJAX
if (response.substring(0,2)=="OK") {
// fai ritornare da "!siscar_proc.pkg_PertTecnico_W.combo_serv"
// una risposta del tipo OK;A.Prima Voce|A.Seconda Voce...
// POPOLA LA COMBO togliendo i primi 3 caratteri di controllo OK;
var stringaRisposta = response.substring(3,response.length);
//mi restituisce il numero della combo chiamante da associare al campo chiamata
var idCombo = response.substring(3,2);
// combo da popolare
var comboRisultato;
comboRisultato = document.getElementById(idCombo);
comboRisultato.options.length = 0;
// elabora risposta
var arrayOptions = stringaRisposta.split("|");
for(var i=0; i<arrayOptions.length; i++) {
var optionValue = arrayOptions[i];
var pos = optionValue.indexOf(".");
var value = optionValue.substring(0,pos-1);
//var option = new Option(optionValue.substring(0,optionValue.length),value); ho dovuto troncarla
//perche le descrizioni dei serv erano troppo lunghe e la combo usciva dalla finestra
if(optionValue.length > 72){
var option = new Option(optionValue.substring(pos+1,70)+"...",value);
} else{
var option = new Option(optionValue.substring(pos+1,optionValue.length),value);
}
comboRisultato.options[i] = option;
}
} else {
// gestione errori: svuoto la combo
comboRisultato.options.length = 0;
comboRisultato.options[0] = new Option("-----",0);
}
}
}
function CompilaUffDir(combo){
CompilaServizio(combo);
CompilaUfficioDir(4,combo);
}
function CompilaServizio(combo) {
var mainSelection = combo;
var tmp_id = "1";
var tmp_tab = "SE";
var tmp_dir = 0;
var tmp_serv = 0;
sendRequest("POST", "!siscar_proc.pkg_PersTecnicoMM_W.combo", "par=" + mainSelection + "&par1=" + tmp_id + "&par2=" + tmp_tab + "&par3=" + tmp_dir + "&par4=" + tmp_serv);
alert("sono in servizio");
}
function CompilaUfficioDir(id,dir) {
alert("sono in ufficio");
var mainSelection = 0;
var tmp_id = id;
var tmp_tab = "UF";
var tmp_dir = dir;
var tmp_serv = 0;
sendRequest("POST", "!siscar_proc.pkg_PersTecnicoMM_W.combo", "par=" + mainSelection + "&par1=" + tmp_id + "&par2=" + tmp_tab + "&par3=" + tmp_dir + "&par4=" + tmp_serv);
}
la chiamata alla funzione js CompilaUffDir è sull'evento onChange della combo direnzione
Spero di essere stata chiara, altrimenti chiedetemi pure.
grazie mille per l'aiuto
Ultima modifica di un moderatore: