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 += "®ion=" + 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 += "®ion=" + 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