combos relacionados jsp y XMLHttpReques

<script type="text/javascript">
var peticion = null;

function inicializa_xhr() {
  if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    return new ActiveXObject("Microsoft.XMLHTTP");
  }
}

function muestraProvincias() {
  if (peticion.readyState == 4) {
    if (peticion.status == 200) {
      var lista = document.getElementById("provincia");
      var documento_xml = peticion.responseXML;

      var provincias = documento_xml.getElementsByTagName("provincias")[0];
      var lasProvincias = provincias.getElementsByTagName("provincia");
      lista.options[0] = new Option("- selecciona -");
     
      // M�todo 1: Crear elementos Option() y a�adirlos a la lista
      for(i=0; i<lasProvincias.length; i++) {
        var codigo = lasProvincias[i].getElementsByTagName("codigo")[0].firstChild.nodeValue;
        var nombre = lasProvincias[i].getElementsByTagName("nombre")[0].firstChild.nodeValue;
        lista.options[i+1] = new Option(nombre, codigo);
      }

   }
  }
}

function cargaMunicipios() {
  var lista = document.getElementById("provincia");
  var provincia = lista.options[lista.selectedIndex].value;
  if(!isNaN(provincia)) {
    peticion = inicializa_xhr();
    if (peticion) {
      peticion.onreadystatechange = muestraMunicipios;
      peticion.open("POST", "http://localhost:8084/AJAX_7/cargaMunicipiosXML.jsp?nocache=" + Math.random(), true);
      peticion.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      peticion.send("provincia=" + provincia);
    }
  }
}

function muestraMunicipios() {
  if (peticion.readyState == 4) {
    if (peticion.status == 200) {
      var lista = document.getElementById("municipio");
      var documento_xml = peticion.responseXML;

      var municipios = documento_xml.getElementsByTagName("municipios")[0];
      var losMunicipios = municipios.getElementsByTagName("municipio");

      // Borrar elementos anteriores
      lista.options.length = 0;
     
      // Se utiliza el m�todo de crear elementos Option() y a�adirlos a la lista
      for(i=0; i<losMunicipios.length; i++) {
        var codigo = losMunicipios[i].getElementsByTagName("codigo")[0].firstChild.nodeValue;
        var nombre = losMunicipios[i].getElementsByTagName("nombre")[0].firstChild.nodeValue;
        lista.options[i] = new Option(nombre, codigo);
      }
    }
  }
}

window.onload = function() {
  peticion = inicializa_xhr();
  if(peticion) {
    peticion.onreadystatechange = muestraProvincias;
    peticion.open("GET", "http://localhost:8084/ajax_7/cargaProvinciasXML.php?nocache="+Math.random(), true);
    peticion.send(null);
  }

  document.getElementById("provincia").onchange = cargaMunicipios;
}

</script>

......

<form>
  <label for="provincia">Provincia</label>
  <select id="provincia">
    <option>Cargando...</option>
  </select>
  <br/><br/>
  <label for="municipio">Municipio</label>
  <select id="municipio">
    <option>- selecciona una provincia -</option>
  </select>
</form>

..................................................................

No tengo idea como hacer esto ..¿quien me orienta?

....
String provincias[]=new String[60];
provincias[1] = "Álava/Araba";
provincias[2] = "Albacete";

......

<%
int municipios [][]={};
municipios[1][14] = "Alegría-Dulantzi";
municipios[1][29] = "Amurrio";
...
municipios[2][493] = "Añana";
municipios[32][35] = "Aramaio";
....

¿como hago para cargar las provincias en primer lugar?
¿y para cuando cambie de provincia que se recargen los municipios de la provincia que marquè?

%>

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Payan

ya di como hacerlo xD

<%@page contentType="text/xml" pageEncoding="UTF-8"%>

<%

String provincias[]=new String[2];

provincias[0] = "Álava/Araba";
provincias[1] = "Albacete";

String cadena="<provincias>";
for(int x=0;x<provincias.length;x++){
   
String provincia="<provincia>\n<codigo>"+x+"</codigo>\n<nombre>"+provincias[x]+"</nombre>\n</provincia>";

cadena=cadena+provincia;

     }
cadena=cadena+"</provincias>";
out.print(cadena);

%>

<%--
    Document   : cargaMunicipiosXML
    Created on : 11-feb-2013, 11:09:31
    Author     : Usuario
--%>

<%@page contentType="text/xml" pageEncoding="UTF-8"%>

<%

String pro=request.getParameter("provincia");

String provincias[][]=new String[2][2];

provincias[0][0] = "los palacios";
provincias[0][1] = "lebrija";

provincias[1][0] = "loss";
provincias[1][1] = "lebr";

String cadena="<municipios>";

int entero=Integer.parseInt(pro);

for(int x=0;x<provincias.length;x++){
   

   String   provincia="<municipio>\n<codigo>"+x+"</codigo>\n<nombre>"+provincias[entero][x]+"</nombre>\n</municipio>";

  cadena=cadena+provincia;

    }
     

cadena=cadena+"</municipios>";
out.print(cadena);
%>

Imagen de ingscjoshua

ammmm

ya existen jquery. no te seria mas facil usarlo con jquery?, ahora parece que trabajas con tecnologias de hace 10 años

Imagen de Payan

no ha sido mi opcion hacerlo

no ha sido mi opcion hacerlo asi,es el profesor..pero llevas razon es mejorcon jquery

Imagen de paranoid_android

info