Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/06/2006, 20:12
Avatar de shakaran
shakaran
 
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 19 años, 4 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