Caricamento di più combo concatenate

Mary78

Nuovo Utente
20 Ago 2013
3
0
0
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.
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:

Mary78

Nuovo Utente
20 Ago 2013
3
0
0
Sono riuscita risolvere... era davvero una cosa molto semplice, bastava che trasformassi la richiesta in sincrona anzichè asincrona, quindi modificare la funzione sendRequest aggiungendo "false" chiamata open (httpDispatcher.open(method, (url + "?" + params),false); )
function sendRequest(method, url, params) {
httpDispatcher.open(method, (url + "?" + params));
httpDispatcher.onreadystatechange = handleResponse;
httpDispatcher.send(null);
}


Spero che possa esservi utile... io c'ho perso una giornata per una scemata :mad::mad:

ciao a tutti



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.
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
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Io non ci sarei mai arrivato :)
Sei stata molto brava! :fonzie:
 
Discussioni simili
Autore Titolo Forum Risposte Data
A caricamento ricorsivo (più o meno) Ajax 0
D rotella di caricamento che si toglie quando parte il download Ajax 0
I caricamento file in sottocartella nome utente PHP 3
Y CARICAMENTO PARZIALE Javascript 1
R Cambiare il nome dell'immagine dopo caricamento ftp HTML e CSS 0
F Caricamento index rotto PHP 1
L Caricamento dominio con FTP già preesistente in rete Domini 2
R Caricamento immagine su cartella remota + mysql PHP 3
G Problema caricamento tabelle MySql da PhP PHP 0
N caricamento listini (Indesign) Webdesign e Grafica 0
X Dichiarare variabili solo al caricamento della pagina PHP 3
A Caricamento file csv MySQL 2
A [PHP] Caricamento database in array PHP 11
J [Javascript] Inserire un caricamento con animazione prima dell'esecuzione di un'azione Javascript 1
M [Javascript] Caricamento menu da file esterno Javascript 8
M [javascript] Aggiungere eventi al caricamento Javascript 0
F [HTML] Caricamento Audio con matching HTML e CSS 10
T [PHP] rendere facoltativo il caricamento di un file PHP 5
gandalf1959 caricamento jpg in database mysql PHP 1
L [PHP] Caricamento file multiplo PHP 3
giuseppe_123 [WordPress] problema installazione temi, plugin e caricamento immagini WordPress 5
B [PHP] Copiare testo da iframe dopo il caricamento? PHP 1
C [Javascript] Caricamento asincrono file esterno Javascript 0
Mauro Guardiani [PHP] script per caricamento video PHP 0
MarcoGrazia [Javascript] Sistema di caricamento dinamico in base allo scrolling Javascript 3
MarcoGrazia [Javascript] Loader fino a caricamento della pagina Javascript 1
F [HTML] caricamento iframe HTML e CSS 1
A [RISOLTO]Errore caricamento file php PHP 21
G [Javascript] rendere visibile un iframe dopo l'avvenuto caricamento del video che esso contiene Javascript 4
E [Javascript] div "si sposta" al caricamento della pagina web Javascript 2
Monital [PHP] Eliminare la Barra di caricamento file alla fine dell'esecuzione PHP 11
Fede72 PHP e caricamento immagini PHP 9
trattorino [Javascript] caricamento immagine con effetto fade Javascript 1
M Comportamento strano di questo script per caricamento file sql in database PHP 7
C Caricamento immagini PHP 12
I caricamento pagina PHP 1
G verifica caricamento foto originali su social network o sito di hosting immagini Discussioni Varie 3
A problema caricamento codice <iframe video youtube PHP 3
M Caricamento script php pagina bianca Javascript 2
C Attendere caricamento pagina prima di autologin Javascript 4
E Realizzare una finestra overlay con caricamento pagina html HTML e CSS 3
P Diminuire il tempo di caricamento JOOMLA Joomla 0
S Generare pagina dopo il caricamento di un dato PHP 6
S Problema con il caricamento di un'immagine su aruba Hosting 11
felino Lentezza all'apertura e al caricamento della pagina, anche in backend WordPress 1
A Caricamento dei Javascript nel window.onload Javascript 3
B Problema caricamento files con FTP Hosting 5
lucolo Caricamento pagina infinito HTML e CSS 1
I caricamento file PHP 12
P messaggio caricamento in corso Javascript 4

Discussioni simili