Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [Ajax] Passaggio parametri

    Salve a tutti,
    vorrei creare una funziona in grado di cambiare il contenuto di un blocco div (identificato con id="contenuto") usando ajax.

    Questa funzione deve ricevere due parametri:

    - editTag: ossia il tag da editare che, ripeto, è un blocco <div id="contenuto"></div>
    - paginaHtml: ossia il contenuto da visualizzare nel tag div.

    La funzione che ho scritto è questa

    codice:
    function assegnaXMLHttpRequest() {
    	var xmlHttp;
    	try {
    	// Firefox, Opera 8.0+, Safari, IE7
    		xmlHttp=new XMLHttpRequest();
    	}
    	catch (e) {
    	// Internet Explorer 5.x 6
    		try {
    			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    		}
    		catch (e) {
    			try {
    				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    			}
    			catch (e) {
    				alert("Il tuo browser non supporta AJAX!");
    				return false;
    			}
    		}
    	}
    	return xmlHttp;
    }
    
    function ajaxFunction(editTag,paginaHtml) {
    	var ajax= assegnaXMLHttpRequest();
    	var e = document.getElementById(editTag);
    	ajax.onreadystatechange= function() {
    		if(ajax.readyState==4) {
        		e.innerHTML= ajax.responseText;
    		}
    	}
    	ajax.open("GET",paginaHtml,true);
    	ajax.send(null);
    }
    </head>
    <body>
       <form name="myForm">
    <input type="button" onclick="javascript:ajaxFunction("contenuto","pagina.html")" />
    </form>
    <div id="contenuto">io sono dinamico</div>
    
    
    io sono statico</p>
    Ebbene con questo codice i problemi sono 2:
    1) così come scritto, non funziona ne su Firefox ne su IE7
    2) togliendo i parametri e scrivendo direttamente il nome del tag [var e = document.getElementById("contenuto");] e il nome del file [ajax.open("GET","pagina.html",true);], su Firefox funziona, mentre su IE7 no.

    Come posso fare?

    Grazie.
    Forza e onore

  2. #2
    Ho provato anche quanto scritta nella Guida Ajax di questo sito (qui), e dopo aver fatto copia/incolla ho riscontrato che non funziona il codice fornito. Ho provato a fare qualche aggiustamento a modo mio, ma niente.
    Forza e onore

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Questa è una pagina di prova che ti mando sperando che sia utile. Il solito esempio di Regioni/province. Naturalmente ha solo scopo di studio, perchè in pratica non si usa quel codice, ma una funzione ajax un po' meglio strutturata.
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Pagina senza titolo</title>
        <link href="../../stili/Styles.css" rel="stylesheet" type="text/css" />
    
        <script type="text/javascript">
            function ListBox_regioni_onchange_get(v)
            {
                /*-----------------------------------------------------------------------
                Qui faccio alcune operazioni prima di richiamare ajax.
                Per esempio, disabilito la lista regioni, o rendo visibile una immagine
                per indicare ajax al lavoro
                ------------------------------------------------------------------------*/
                //disabilito la lista regioni
                v.disabled = true;
                
                
                //creo l'oggetto che fa la richiesta http
                var objHTTP = null;
    	        if(window.XMLHttpRequest) 
    	        {
    		        // Gecko (Firefox, Moz), KHTML (Konqueror, Safari), Opera, Internet Explorer 7
    		        objHTTP = new XMLHttpRequest(); 
    	        } 
    	        else if(window.ActiveXObject) 
    	        {
    		        try
    		        {
    			        // Internet Explorer 6 
    			        objHTTP = new ActiveXObject("MSXML2.XMLHTTP"); 
    		        } 
    		        catch(e) 
    		        {
    			        // Internet Explorer 4,5 
    			        objHTTP = new ActiveXObject("Microsoft.XMLHTTP"); 
    		        }
    		        } 
    	        else 
    	        {
    		        alert("Non è possibile creare l'oggetto che fa la richiesta http");
    		        return;
    	        }
                
                //lista parametri da mandare via post nel formato
                //variabile1=valore1&variabile2=valore2...
                var parametri = "codice_istat_regione=" + encodeURIComponent(v.value);
    	        //parametri = parametri.replace(/\+/g, "%2B");
    	        
    	        /*-------------------------------------------------------------------------
    	        La risorsa da richiedere è la pagina server che svolge i compiti richiesti.
    	        Se è la medesima, si può usare ?.
    	        Può naturalmente essere seguita da parametri.
    	        In questo caso spedisco il parametro ajax_comando per dire alla pagina
    	        cosa fare
    	        --------------------------------------------------------------------------*/
    	        var url = "ajax_in_action/regioni_provincie.aspx?ajax_comando=provincie";
    	        
    	        
    	        //apertura connessione HTTP
    	        //1° parametro, GET, POST, HEAD
    	        //2° parametro, risorsa da richiedere: ? per richiamare la pagina medesima
    	        //3° parametro, asincrona=true, sincrona=false
    	        objHTTP.open("POST", url, true);
    	        objHTTP.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	        objHTTP.setRequestHeader('Content-length',parametri.length);
    	        objHTTP.setRequestHeader('Connection', 'close');
    	        //objHTTP.setRequestHeader("connection", "keep alive");//questo è predefinito
            	
    	        /*--------------------------------------------------------------------------------
    	        //impostazione della funzione di callback: in questo caso, la funzione è in linea.
    	        //ma è possibile indicare il NOME della funzione. Per esempio:
    	        //objHTTP.onreadystatechange = mia_funzione; //nota: senza parentesi finali
    	        // e altrove, per esempio più sotto, definire la funzione:
    	        //function mia_funzione(){...}
    	        ---------------------------------------------------------------------------------*/
    	        objHTTP.onreadystatechange = function() 
    	        {
    		        if (objHTTP.readyState == 4) 
    		        {
    			        if (objHTTP.status != 200) 
    			        {
    			            /*--------------------------------------------------------------------
    			            Qui sono in errore, e faccio le opportune operazioni, per esempio,
    			            riabilito i pulsanti disabilitati, messaggio di errore, etc...
    			            ---------------------------------------------------------------------*/
    			            v.disabled = false;
    			            
    			            alert("ERRORE NELLA TRASMISSIONE DATI!" 
    			                    + "\n\nreadyState:"
    			                    + objHTTP.readyState 
    			                    + "\nstatus: "
    			                    + objHTTP.status 
    			                    + "\nstatusText: " 
    			                    + objHTTP.statusText 
    			                    + "\n\nheaders:\n"
    			                    + objHTTP.getAllResponseHeaders()
    			                ); 
    			            return;
    			        }
            			
    			        /*--------------------------------------------------------------------
    			        Qui ho ottenuto i dati dal server
    			        o sotto forma di testo o html, con objHTTP.responseText
    			        o sotto forma di xml, con objHTTP.responseXML
    			        ---------------------------------------------------------------------*/
    			        var t = objHTTP.responseText;
            			//var tx = objHTTP.responseXML;
            			
    			        //creo la lista provincie
    			        document.getElementById("div2").innerHTML = "Scegli la provincia:
    " + t;
    			        
    			        //riabilito la lista regioni
    			        v.disabled = false;
    		        }
    	        };
            	
    	        
    	        
    	        
    	        //invio della richiesta, per GET e HEAD è null
    	        objHTTP.send(parametri);
                
                
                
                
            }
        </script>
    
    </head>
    <body>
        <form id="form1" action="?">
            <div id="div1" style="float: left">
                Scegli la regione:
    
                <select name="regioni" id="regioni" onchange="ListBox_regioni_onchange_get(this);" style="height: 333px; width: 208px;" multiple="multiple">
                    <option value="13">ABRUZZO</option>
                    <option value="17">BASILICATA</option>
                    <option value="18">CALABRIA</option>
                    <option value="15">CAMPANIA</option>
                    <option value="08">EMILIA-ROMAGNA</option>
                    <option value="06">FRIULI-VENEZIA GIULIA</option>
                    <option value="12">LAZIO</option>
                    <option value="07">LIGURIA</option>
                    <option value="03">LOMBARDIA</option>
                    <option value="11">MARCHE</option>
                    <option value="14">MOLISE</option>
                    <option value="01">PIEMONTE</option>
                    <option value="16">PUGLIA</option>
                    <option value="20">SARDEGNA</option>
                    <option value="19">SICILIA</option>
                    <option value="09">TOSCANA</option>
                    <option value="04">TRENTINO-ALTO ADIGE</option>
                    <option value="10">UMBRIA</option>
                    <option value="02">VALLE D'AOSTA</option>
                    <option value="05">VENETO</option>
                </select>
            </div>
            <div id="div2">
                Scegli la provincia:
    
            </div>
        </form>
    </body>
    </html>
    Pietro

  4. #4
    Scusa la tua risposta risponde al titolo del mio post (che a questo punto credo di aver sbagliato in quanto avrei dovuto scrivere "[javascript] passaggio parametri")

    La mia domanda è diversa, ed è facilmente deducibile dal contenuto della mia richiesta.

    Ciao e grazie.
    Forza e onore

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Premier
    Scusa la tua risposta risponde al titolo del mio post (che a questo punto credo di aver sbagliato in quanto avrei dovuto scrivere "[javascript] passaggio parametri")

    La mia domanda è diversa, ed è facilmente deducibile dal contenuto della mia richiesta.

    Ciao e grazie.
    mi dispiace, ho solo voluto darti uno spunto che, come tale deve essere sviluppato
    Pietro

  6. #6
    ma cos'è sta roba?

    Codice PHP:
    onclick="java-script 



    e poi ma dove le hai scritte le funzioni?
    :rollo:
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  7. #7
    Originariamente inviato da Jarno
    ma cos'è sta roba?

    Codice PHP:
    onclick="java-script 
    Eh si in effetti quella riga è sbagliata (colpa del copia/incolla), quella esatta è
    codice:
    onclick="javascript:ajaxFunction()"
    Originariamente inviato da Jarno
    e poi ma dove le hai scritte le funzioni?
    :rollo:
    com'è evidente dai tag html, le funzioni sono scritte nell'head.

    Comuque l'errore che mi da Internet Explorer 7 è sul metodo open, dice "Accesso negato".
    Forza e onore

  8. #8
    no, non è che non ho capito, è che volevo dirti che è sbagliato:

    - mai visto scritto Java-script
    - il codice javascript deve stare dentro i suoi tag
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  9. #9
    Ok, grazie, l'avevo visto su un forum, forse si usa quando in una pagina possono esserci script in diversi linguaggi.

    Comunque ho risolto il problema del passaggio dei parametri, ora mi resta quello della compatibilità sui due browser.
    Forza e onore

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.