Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Bloqueada con JavaScript y ajax

Estas en el tema de Bloqueada con JavaScript y ajax en el foro de Javascript en Foros del Web. Hola, soy nueva en este tema, y estoy bloqueada. Necesito hacer una página con AJAX, en la que mediante un <select> seleccione un número, y ...
  #1 (permalink)  
Antiguo 15/02/2013, 14:13
 
Fecha de Ingreso: noviembre-2012
Mensajes: 13
Antigüedad: 11 años, 5 meses
Puntos: 0
Bloqueada con JavaScript y ajax

Hola, soy nueva en este tema, y estoy bloqueada. Necesito hacer una página con AJAX, en la que mediante un <select> seleccione un número, y me aparezca un registro de un XML con un id igual a ese numero. Mediante la herramienta XMLHttpRequest consigo que me muestre todo el XML en formato de texto, pero no la seleccionada. ¿Podríais ayudarme? Estoy bloqueada.

Os muestro los códigos:
Código HTML:
 <head>
			<script language="JavaScript" type="text/javascript">
			var peticion01 = null; //Creamos la variable
			//Para Internet Explorer creamos un objeto ActiveX
			if(navigator.appName=="Microsoft Internet Explorer"){
				peticion01 = new ActiveXObject("Microsoft.XMLHTTP");
			}else{
				peticion01 = new XMLHttpRequest;
			}
			function Coger(url) {//Función coger, en esta caso le entra una dirección relativa al documento actual.
				if(peticion01) { //Si tenemos el objeto peticion01
					peticion01.open('GET', url, false); //Abrimos la url, false=forma síncrona
					peticion01.send(null); //No le enviamos datos al servidor.
					
					//Escribimos la respuesta en el campo con ID=resultado
					document.getElementById('resultado').innerHTML=peticion01.responseText;
				}
			}

		</script>
	</head>
	
	<body>
		<form method="get">
			<select id="numero">
				<option value="1">1</option>
			  	<option value="2">2</option>
			  	<option value="3">3</option>
			</select>
		</form>
		<button onClick="Coger('datos/provincias.xml')">Coge un documento</button>
		<table >
			<tr>
			<!--El campo con id=resultado se sustituirá por causa de que ese id está en la función coger-->
				<td><span id="resultado"></span></td>
			</tr>
		</table>
	</body> 
Y el código XML (lo he simplificado bastante):
Código XML:
Ver original
  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2.     <Provincias>
  3.         <Ciudad id='1'>Almeria</Ciudad>
  4.         <Ciudad id='2'>Cadiz</Ciudad>
  5.         <Ciudad id='3'>Cordoba</Ciudad>
  6.     </Provincias>

Gracias por anticipado
  #2 (permalink)  
Antiguo 15/02/2013, 17:09
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Bloqueada con JavaScript y ajax

Hola:

En vez de responseText deberías recibir los datos con responseXML, luego recorrer el array de ciudades (getElementsByTagName("Ciudad")), y consultar el id...

Inténtalo y nos cuentas los progresos...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 15/02/2013, 18:03
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 3 meses
Puntos: 36
Respuesta: Bloqueada con JavaScript y ajax

Caricatos tiene razon, tienes que recorrer el arreglo obtenido. No se cuanto tiempo tienes con tu frustracion pero aqui te corregi tu codigo y le agregue lo que necesitas para hacerlo funcionar, cabe mencionar que es muy importante que veas el codigo para que sepas como funciona y puedas usarlo o mejorarlo posterior mente.

Tambien te falto algo mas en tu codigo, no le decias cual elemento del combo box querias, pero lo pongo para que veas como se hace:

Código Javascript:
Ver original
  1. var peticion01 = null;
  2. //Creamos la variable
  3. //Para Internet Explorer creamos un objeto ActiveX
  4. if (navigator.appName == "Microsoft Internet Explorer") {
  5.     peticion01 = new ActiveXObject("Microsoft.XMLHTTP");
  6. } else {
  7.     peticion01 = new XMLHttpRequest;
  8. }
  9. function Coger(url) {//Función coger, en esta caso le entra una dirección relativa al documento actual.
  10.     if (peticion01) {//Si tenemos el objeto peticion01
  11.         peticion01.open('GET', url, false);
  12.         //Abrimos la url, false=forma síncrona
  13.         peticion01.send(null);
  14.         //No le enviamos datos al servidor.
  15.  
  16.         // obtenemos el valor seleccionado de nuestro comboBox
  17.         var selectMenu = document.getElementById("numero");
  18.         var selectedValue = selectMenu.options[selectMenu.selectedIndex].value;
  19.  
  20.         // Obtenemos nuestro xml
  21.         var xmlData = peticion01.responseXML.getElementsByTagName("Ciudad");
  22.         for (var i = 0; i < xmlData.length; i++) {
  23.             if (xmlData[i].attributes.id.nodeValue == selectedValue) {
  24.                 console.info("Se encontro el id seleccionado");
  25.                 //Escribimos la respuesta en el campo con ID=resultado
  26.                 document.getElementById('resultado').innerHTML = xmlData[i].textContent;
  27.                 break
  28.             }
  29.         };
  30.  
  31.     }
  32. }

Caricatos, como la vez, los dejo que se esfuerzen mas al obtener su codigo o les ayudo ? cual es tu opinion al respecto?
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.
  #4 (permalink)  
Antiguo 16/02/2013, 00:58
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Bloqueada con JavaScript y ajax

Hola:

He visto que has creado tu firma

Cita:
Iniciado por Reedyseth Ver Mensaje
...
Caricatos, como la vez, los dejo que se esfuerzen mas al obtener su codigo o les ayudo ? cual es tu opinion al respecto?
Como usuario (no moderador), prefiero participar considerando que los foros son de "debate" o "discusión" (amable, por supuesto)... es más, a veces (muchas veces), lo que se considera "solución" es (muy) mejorable, así que en principio me gusta hacer razonamientos teóricos, dejando de lado los códigos... luego habrá que ver como evoluciona... simplemente es mi idea de como participar.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 16/02/2013, 01:04
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 3 meses
Puntos: 36
Respuesta: Bloqueada con JavaScript y ajax

Pues si tienes razón, para eso se crean los temas, igual y puede salir otra persona con un código diferente y nos puede ayudar a todos, saludos. !!
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.
  #6 (permalink)  
Antiguo 17/02/2013, 10:54
 
Fecha de Ingreso: noviembre-2012
Mensajes: 13
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Bloqueada con JavaScript y ajax

Muchísimas gracias a todos!!! He conseguido solucionarlo... cuando he visto la solución me sentí muy tonta... siempre creo que la solución es más complicada de lo que realmente es.
Reedyseth, entiendo la duda sobre poner o no el código... entiendo que no me tenéis porqué hacer el trabajo, por eso puse un código simplificado, para ahora comerme bien la cabeza para adaptarlo al real!!!!!
Muchas gracias de nuevo, sois geniales.
  #7 (permalink)  
Antiguo 17/02/2013, 11:35
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 3 meses
Puntos: 36
Respuesta: Bloqueada con JavaScript y ajax

Cuando un usuario responde si le sirvio no nuestra respuesta es cuando nos damos por bien servidos, que bueno que te sirvio, saludos !!!
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.

Etiquetas: ajax, html, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:27.