Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/02/2006, 13:23
tammander
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 4 meses
Puntos: 7
A ver si esto te sirve de algo. Te explico. Esto va en una página donde hay un formulario con localidad, provincia, region y pais. Cuando alguno de ellos cambia de genera una llamada AJaX.

Código:
var xmlHttp;

function createXMLHttpRequest() {
	if (window.ActiveXObject) {
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else if (window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	}
}

function startRequest(xFile) {
	createXMLHttpRequest();
	xmlHttp.onreadystatechange = handleStateChange;
	xmlHttp.open("GET", xFile, true);
	xmlHttp.send(null);
}

function handleStateChange() {
	if(xmlHttp.readyState == 4) {
		if(xmlHttp.status == 200) {
			document.getElementById("Geo").innerHTML = xmlHttp.responseText;
		}
	}
}

function changeGeo(){
	var varUrl, args = changeGeo.arguments;
	if(args.length>0){
		varUrl = args[0] + "?";
		if(args.length>=1){
			varUrl += "pais=" + args[1];
			if(args.length>=2){
				varUrl += "&region=" + args[2];
				if(args.length>=3){
					varUrl += "&provincia=" + args[3];
					if(args.length>=4){
						varUrl += "&localidad=" + args[4];
					}
				}
			}
		}
		// alert(varUrl);
		document.getElementById('Geo').innerHTML = "Espere...";
		startRequest(varUrl);
	}
}

function changeGeo2(){
	var varUrl, args = changeGeo2.arguments;
	if(args.length>0){
		varUrl = args[0] + "?";
		if(args.length>=1){
			varUrl += "pais=" + extraeValorList(args[1]);
			if(args.length>=2){
				varUrl += "&region=" + extraeValorList(args[2]);
				if(args.length>=3){
					varUrl += "&provincia=" + extraeValorList(args[3]);
					if(args.length>=4){
						varUrl += "&localidad=" + extraeValorList(args[4]);
					}
				}
			}
		}
		// alert(varUrl);
		document.getElementById('Geo').innerHTML = "Espere...";
		startRequest(varUrl);
	}
}

function extraeValorList(objName){
	if(document.getElementById(objName).options!="indefined"){
		return document.getElementById(objName).options[document.getElementById(objName).selectedIndex].value;
	} else { return ""; }
}

Estas dos ultimas funcion (changeGeo2 y extraeValorList) lo uso en la página de respuesta donde en cada onchange de cada select (menos localidad) pongo un onChange="changeGeo2('geo_view.php','pais','region ','provincia','localidades_nombre')

El el tag body meto un onload="changeGeo('geo_view.php','Torremolinos','M alaga','Andalucia','España')"

Y en la posición de la página donde quiero que aparezca hao un <div id="geo">Espere...</div>


Me funciona en IE y FF


Bueno. Espero haber ayudado




Un saludo