Foros del Web » Programando para Internet » Javascript »

problema con el ambito de variable

Estas en el tema de problema con el ambito de variable en el foro de Javascript en Foros del Web. hola tengo es siguiente codigo que trato de asignar a una variable(this.states) mediante ajax usando prototype pero como veran al asignarle el valor a this.states ...
  #1 (permalink)  
Antiguo 15/06/2009, 11:18
 
Fecha de Ingreso: junio-2007
Mensajes: 75
Antigüedad: 16 años, 10 meses
Puntos: 1
problema con el ambito de variable

hola tengo es siguiente codigo que trato de asignar a una variable(this.states) mediante ajax usando prototype pero como veran al asignarle el valor a this.states dentro de la funcion que se ejecuta cuando la peticion fue satisfactoria esta no se refleja en la variable this.states que esta fuera de esa funcion ... y lo que trato de hacer es asignar el valor a la variable fuera de dicha funcion....

Código:
function StateSuggestions() {
	this.states="";
	new Ajax.Request
	(
		"procesamiento.php",
		{
			method:'post',
			parameters:'lista=profesores',
			onComplete:function(respuesta)
			{
				var profes=eval('('+respuesta.responseText+')');
				this.states = profes;
				alert(typeof this.states);// retorna object
				alert(typeof profes);// retorna object
			}
		}
	);
    
   alert(typeof this.states);//retorna string aqui quiero q tenga el valor que contiene la variable profes...
}
  #2 (permalink)  
Antiguo 15/06/2009, 11:54
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 46
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: problema con el ambito de variable

Hola,

Prueba a hacer esto:

Código:
this.states="";
var that = this;

dentro de la funcion interna, utiliza that en lugar de this:

Código:
onComplete:function(respuesta)
			{
				var profes = eval('('+respuesta.responseText+')');
				that.states = profes;
			}

saludos
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 21:02.