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

No puedo setear propiedad de objeto en callback de ajax

Estas en el tema de No puedo setear propiedad de objeto en callback de ajax en el foro de Frameworks JS en Foros del Web. Tengo un metodo que ejecuta ajax, al finalizar quiero que el callback setee una propiedad del objeto como true. Y luego llamar a otro metodo ...
  #1 (permalink)  
Antiguo 01/10/2011, 13:03
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 9 meses
Puntos: 35
No puedo setear propiedad de objeto en callback de ajax

Tengo un metodo que ejecuta ajax, al finalizar quiero que el callback setee una propiedad del objeto como true.
Y luego llamar a otro metodo que leerá ese flag para tomar una decisión.
Código Javascript:
Ver original
  1. var Comments = {
  2.         flag:false,
  3.         init:function(){
  4.             $.ajax({
  5.                 url: "test.php",
  6.                 success:function(f){
  7.                     Comments.flag = true;
  8.                 }
  9.             });
  10.         },
  11.        //Aqui en función de flag seguirá otro codigo que dependera del true o false
  12.         showFlag:function(){
  13.             alert(Comments.flag);
  14.             .....
  15.         }
  16.     };
  17.     $(document).ready(function(){
  18.         var c = Comments;
  19.         c.init();
  20.         c.showFlag();
  21.     });
Pero el problema es que jamas setea el flag como true. Bueno si lo hace desde el contexto del callback pero fuera de él no.
porque?
__________________
I am Doyle please insert code.
  #2 (permalink)  
Antiguo 01/10/2011, 15:16
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: No puedo setear propiedad de objeto en callback de ajax

Prueba definiendola primero como variable global.
  #3 (permalink)  
Antiguo 01/10/2011, 17:15
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 9 meses
Puntos: 35
Respuesta: No puedo setear propiedad de objeto en callback de ajax

Sigue sin funcionar
__________________
I am Doyle please insert code.
  #4 (permalink)  
Antiguo 01/10/2011, 20:02
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 9 meses
Puntos: 35
Respuesta: No puedo setear propiedad de objeto en callback de ajax

Creo que el problemas reside en
Código Javascript:
Ver original
  1. success:function(f){
  2.                 Comments.flag = true;
  3. }
Alli estoy podria user this.flag pero desde ese contexto, this ase referencia al metodo $.ajax... tendria que hacer referencia al Comment instanciado a sea 'c'
__________________
I am Doyle please insert code.
  #5 (permalink)  
Antiguo 02/10/2011, 05:18
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: No puedo setear propiedad de objeto en callback de ajax

Podrías hacer algo así:

Código Javascript:
Ver original
  1. ...
  2. init: function(){
  3.     var self = this;
  4.     $.ajax({
  5.         url: "test.php",
  6.         success:function(f){
  7.             self.flag = true;
  8.         }
  9.    });
  10. }
  11. ...

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 02/10/2011, 07:51
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 9 meses
Puntos: 35
Respuesta: No puedo setear propiedad de objeto en callback de ajax

Si, el problema que veo es donde tengo la llamada ajax, es asincronica. por lo que dependiendo CUANDO retorne success, puede ejecutarse antes o despues de showFlag.
Veré si lo refactoreo.
Gracias!!
__________________
I am Doyle please insert code.

Etiquetas: ajax, objeto, php, propiedad
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 15:21.