Visualizzazione dei risultati da 1 a 2 su 2

Discussione: funzione ajax asp

  1. #1

    funzione ajax asp

    salve,
    ho un form in cui vorrei creare una cosidetta select chaining di questo tipo:

    <form method="post" action="../include/lib.asp">

    <select name="prima" id="prima">
    <option value="1">opzione 1</option>
    <option value="2">opzione 2</option>
    </select>


    <select name="seconda" id="seconda">
    <%SQL="Select * from categorie where id="&prima
    set mostra=conn.execute(SQL)
    while not mostra.eof
    %>
    <option value="<%=mostra("id")%>"><%=mostra("nome")%></option>
    </select>

    Vorrei far eseguire la query sql e quindi aggiornare i risultati mostrati nella seconda select ogni volta che cambia la selezione della prima select.

    ho cercato esempi su google ma non sono riuscito a capirne il funzionamento.
    qualcuno mi aiuta???
    grazie

    ps:
    per ciò che riguarda le parti di codice asp non c'è problema, mi servirebbe una mano nella parte ajax
    Empirestate.it - La grande mela arriva in Italia
    sempre voluto sapere sulla grande mela, forum, articoli e molto altro ancora

    www.empirestate.it

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    833
    Forse, prova cosi':

    index.php o la pagina con le select

    codice:
    <script type="text/javascript" src="js/getdati.js"></script>
    
    
    <script type="text/javascript">
    var ajax = new Array();
    
    function GetDati(sel)
    {
    	var prima = sel.options[sel.selectedIndex].value;
    	document.getElementById('seconda').options.length = 0;	
    	if(prima.length>0){
    		var index = ajax.length;
    		ajax[index] = new sack();
    		ajax[index].requestFile = 'GetDati.php?prima='+prima;	
    		ajax[index].onCompletion = function(){ createSeconda(index) };	
    		ajax[index].runAJAX();		
    	}
    }
    function createSeconda(index)
    {
    	var obj = document.getElementById('seconda');
    	eval(ajax[index].response);	
    }
    </script>
    </head>
    .....
    
    qua tua la prima select, che non ho capito se ha valori fissi o se reperisci anche questi con php, comunque
    
    <select name="prima" id="prima" onchange="GetDati(this)">
    <option value="1">opzione 1</option>
    <option value="2">opzione 2</option>
    </select>
    
    <select name="seconda" id="seconda"></select>
    pagina getdati.php
    codice:
    <?php
    include("connection.inc");
    $prima= $_GET["prima"];
    
    $sql = "select where = '".$prima."' 
    while ....
    { 
      $nome= ....
        echo "obj.options[obj.options.length] = new Option('$nome');\n";
      }  
    ?>
    e infine il js getdati

    codice:
    /* Simple AJAX Code-Kit (SACK) v1.6.1 */
    /* ©2005 Gregory Wild-Smith */
    /* www.twilightuniverse.com */
    /* Software licenced under a modified X11 licence,
       see documentation or authors website for more details */
    
    function sack(file) {
    	this.xmlhttp = null;
    
    	this.resetData = function() {
    		this.method = "POST";
      		this.queryStringSeparator = "?";
    		this.argumentSeparator = "&";
    		this.URLString = "";
    		this.encodeURIString = true;
      		this.execute = false;
      		this.element = null;
    		this.elementObj = null;
    		this.requestFile = file;
    		this.vars = new Object();
    		this.responseStatus = new Array(2);
      	};
    
    	this.resetFunctions = function() {
      		this.onLoading = function() { };
      		this.onLoaded = function() { };
      		this.onInteractive = function() { };
      		this.onCompletion = function() { };
      		this.onError = function() { };
    		this.onFail = function() { };
    	};
    
    	this.reset = function() {
    		this.resetFunctions();
    		this.resetData();
    	};
    
    	this.createAJAX = function() {
    		try {
    			this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    		} catch (e1) {
    			try {
    				this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    			} catch (e2) {
    				this.xmlhttp = null;
    			}
    		}
    
    		if (! this.xmlhttp) {
    			if (typeof XMLHttpRequest != "undefined") {
    				this.xmlhttp = new XMLHttpRequest();
    			} else {
    				this.failed = true;
    			}
    		}
    	};
    
    	this.setVar = function(name, value){
    		this.vars[name] = Array(value, false);
    	};
    
    	this.encVar = function(name, value, returnvars) {
    		if (true == returnvars) {
    			return Array(encodeURIComponent(name), encodeURIComponent(value));
    		} else {
    			this.vars[encodeURIComponent(name)] = Array(encodeURIComponent(value), true);
    		}
    	}
    
    	this.processURLString = function(string, encode) {
    		encoded = encodeURIComponent(this.argumentSeparator);
    		regexp = new RegExp(this.argumentSeparator + "|" + encoded);
    		varArray = string.split(regexp);
    		for (i = 0; i < varArray.length; i++){
    			urlVars = varArray[i].split("=");
    			if (true == encode){
    				this.encVar(urlVars[0], urlVars[1]);
    			} else {
    				this.setVar(urlVars[0], urlVars[1]);
    			}
    		}
    	}
    
    	this.createURLString = function(urlstring) {
    		if (this.encodeURIString && this.URLString.length) {
    			this.processURLString(this.URLString, true);
    		}
    
    		if (urlstring) {
    			if (this.URLString.length) {
    				this.URLString += this.argumentSeparator + urlstring;
    			} else {
    				this.URLString = urlstring;
    			}
    		}
    
    		// prevents caching of URLString
    		this.setVar("rndval", new Date().getTime());
    
    		urlstringtemp = new Array();
    		for (key in this.vars) {
    			if (false == this.vars[key][1] && true == this.encodeURIString) {
    				encoded = this.encVar(key, this.vars[key][0], true);
    				delete this.vars[key];
    				this.vars[encoded[0]] = Array(encoded[1], true);
    				key = encoded[0];
    			}
    
    			urlstringtemp[urlstringtemp.length] = key + "=" + this.vars[key][0];
    		}
    		if (urlstring){
    			this.URLString += this.argumentSeparator + urlstringtemp.join(this.argumentSeparator);
    		} else {
    			this.URLString += urlstringtemp.join(this.argumentSeparator);
    		}
    	}
    
    	this.runResponse = function() {
    		eval(this.response);
    	}
    
    	this.runAJAX = function(urlstring) {
    		if (this.failed) {
    			this.onFail();
    		} else {
    			this.createURLString(urlstring);
    			if (this.element) {
    				this.elementObj = document.getElementById(this.element);
    			}
    			if (this.xmlhttp) {
    				var self = this;
    				if (this.method == "GET") {
    					totalurlstring = this.requestFile + this.queryStringSeparator + this.URLString;
    					this.xmlhttp.open(this.method, totalurlstring, true);
    				} else {
    					this.xmlhttp.open(this.method, this.requestFile, true);
    					try {
    						this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    					} catch (e) { }
    				}
    
    				this.xmlhttp.onreadystatechange = function() {
    					switch (self.xmlhttp.readyState) {
    						case 1:
    							self.onLoading();
    							break;
    						case 2:
    							self.onLoaded();
    							break;
    						case 3:
    							self.onInteractive();
    							break;
    						case 4:
    							self.response = self.xmlhttp.responseText;
    							self.responseXML = self.xmlhttp.responseXML;
    							self.responseStatus[0] = self.xmlhttp.status;
    							self.responseStatus[1] = self.xmlhttp.statusText;
    
    							if (self.execute) {
    								self.runResponse();
    							}
    
    							if (self.elementObj) {
    								elemNodeName = self.elementObj.nodeName;
    								elemNodeName.toLowerCase();
    								if (elemNodeName == "input"
    								|| elemNodeName == "select"
    								|| elemNodeName == "option"
    								|| elemNodeName == "textarea") {
    									self.elementObj.value = self.response;
    								} else {
    									self.elementObj.innerHTML = self.response;
    								}
    							}
    							if (self.responseStatus[0] == "200") {
    								self.onCompletion();
    							} else {
    								self.onError();
    							}
    
    							self.URLString = "";
    							break;
    					}
    				};
    
    				this.xmlhttp.send(this.URLString);
    			}
    		}
    	};
    
    	this.reset();
    	this.createAJAX();
    }

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.