Foros del Web » Programando para Internet » Javascript » Frameworks JS »

onChange no actualizado

Estas en el tema de onChange no actualizado en el foro de Frameworks JS en Foros del Web. hola, he leido varios tutoriales y ejemplos de AJAX con onChange y una vez mas me dispuse a crear uno desde el principio. Pero tiene ...
  #1 (permalink)  
Antiguo 30/06/2006, 20:12
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 19 años, 3 meses
Puntos: 7
onChange no actualizado

hola, he leido varios tutoriales y ejemplos de AJAX con onChange y una vez mas me dispuse a crear uno desde el principio. Pero tiene el particular problema de que una vez que elijo una opcion...y la muestra, cuando elijo otra opcion ya me no me muestra el contenido de nuevo o sea que solo es util para un uso. Sin embargo en otros ejemplos veo que se puede poner para varios usos. Podrian decirme en que parte de mi script tengo que modificar o donde esta el problema?.

Tengo 3 ficheros:

clases.php (el cliente con el select y que muestra la elecion en un div)

Código:
<script type="text/javascript" src="ajax/lib_ajax.js"></script>
<form>
<select name="clase" id="clase" onChange="EnviarPeticion('talentos.php?clase=','clase','talentos','true','true','true','false')">
      <option selected >Elige clase</option>
      <option >Palad&iacute;n</option>
      <option >Mago</option>
      <option >Hechicero</option>
      <option >Druida</option>
      <option >Cl&eacute;rigo</option>
      <option >Ladr&oacute;n</option>
      <option >Explorador</option>
      <option >Guerrero</option>
      <option >Amazona</option>
    </select>
</form>

<div id=talentos><center><span id=estado></span>Selecciona una clase para cargar los talentos.</center>
talentos.php (el servidor que es llamado por GET)
Código:
<?
	// Obtener el parametro enviado
	$claseget=$_GET["clase"];
	echo "<br>Tu clase elegida es:<br>";
	echo $claseget;

?>
lib_ajax.js (libreria con todo el ajax que poco a poco he conseguido crear)
Código:
//PASO 1:
//Variable que recibira todos los parametros.
var ajax=new NuevoAjax(); //Creamos el ajax segun el navegador.
//ajax.overrideMimeType('text/xml');//Sobreescribimos cabecera (mas compatibilidad para navegadores).

//PASO 2:
function NuevoAjax(){ //Funcion que asignara el XMLHttpRequest segun el navegador
	if(window.XMLHttpRequest){
		navegador=new  XMLHttpRequest(); //Para navegadores distintos de Internet Explorer
	}else{ //Para Internet Explorer
		navegador=new ActiveXObject("Microsoft.XMLHTTP");
	}
	return navegador;
}

var estado0=true;
var estado1=true;
var estado2=true;
var estado3=true;
function EnviarPeticion(url,idenvio,idcontenedor,estado0,estado1,estado2,estado3){
	var contenedor=document.getElementById(idcontenedor);
	//Paso 4: Creamos la peticion (GET)+(URL)+(TRUE=ENVIA).
	ajax.open("GET",url+document.getElementById(idenvio).value,true);

    //Ajax invoca 4 peticiones por proceso para comprobar el estado.
	//Almacenaremos el estado, segun cambie. Para ello tenemos
	//una funcion auxiliar "CallBack" que nos comprobara el estado de la peticion.
	ajax.onreadystatechange=function CallBack(){//PASO 3: Nos comprueba el estado de la peticion.
	//readyState:
	//0 = sin inicializar
	//1 = cargando
	//2 = cargado
	//3 = interactivo
	//4 = completo
	if(ajax.readyState==0 && estado0==true){
		document.getElementById('estado').innerHTML="Iniciando...";
	}
	if(ajax.readyState==1 && estado1==true){
			document.getElementById('estado').innerHTML="<img src='images/indicator.gif' border='0'>Cargando...";
	}
	if(ajax.readyState==2 && estado2==true){
		document.getElementById('estado').innerHTML="Datos cargados";
	}
	if(ajax.readyState==3 && estado3==true){
		document.getElementById('estado').innerHTML="Interactuando con los datos...";
	}
	if(ajax.readyState==4){//Si el estado es 4 la peticion ha sido completada.
		if(ajax.status==200){//Si la respuesta HTTP ha sido 200 se ha recibido correctamente.
			//Escribimos el resultado (ajax.responseText).
			document.getElementById('estado').innerHTML="Cargado completamente.";
			contenedor.innerHTML = "<b>"+ajax.responseText+"</b>";
			//ajax=new NuevoAjax();//Instanciamos otro nuevo ajax.
		}else{
			document.getElementById('estado').innerHTML = "<b>Error en el status"+ajax.status+"</b>";
			//ajax=new NuevoAjax();//Instanciamos otro nuevo ajax.
		}
	}	
	}//Fin callback		

	//Paso 4: Enviamos la peticion (SEND)
    ajax.send(null);
}
Gracias, espero que alguien se tome la molestia en ayudarme.Saludos
  #2 (permalink)  
Antiguo 30/06/2006, 21:00
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
loading.............


porque no comienzas cambiando el metodo GET por POST?

connection closed.
__________________

Maborak Technologies
  #3 (permalink)  
Antiguo 01/07/2006, 08:27
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 19 años, 3 meses
Puntos: 7
En todos los ejemplos que he visto se utilizaba "GET"...por eso no he utilizado "POST". Aunque probare tu propuesta.

En tal caso habria que poner algo en el send?

Seria algo como:
ajax.open("POST",url+document.getElementById(idenv io).value,true);
...
...
ajax.send(¿AQUI PONGO ALGO??);

Gracias, a ver si solucionamos este pequeño problema. Un saludo.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 09:14.