Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/04/2012, 09:51
argenisfd
 
Fecha de Ingreso: enero-2011
Ubicación: Maracay
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 2
Respuesta: Recuperar un texto de PHP con JQuery

Hola gustavodiazs, esto es un problema que nos ocurre a los que programamos con ajax, desde novatos hasta los mas experimentados, resulta que las funciones de ajax se ejecuta de forma asincrona es decir, que rompen el hilo de ejecución y se ejecutan independiente del flujo normal de ejecución esto hace que tu codigo de retorno en la función fnGetVal se ejecute antes de que recibas los datos desde el servidor a traves de ajax, te explico:

Código Javascript:
Ver original
  1. function fnGetVal(txtUrl){
  2.  var jsDescripcion = '';
  3.  $.get(txtUrl, function(data){
  4.      alert("Dato cargado: " + data);
  5.      jsDescripcion = data;
  6. });
  7.  
  8.    /*este codigo se ejecuta antes que:
  9.       alert("Dato cargado: " + data);
  10.  jsDescripcion = data;
  11.   */
  12. return jsDescripcion;
  13. }

por esto es que la función jQuery.get recibe un parámetro con la función a ajecutar al momento que la función reciba los datos del servidor...

pero en el caso de que necesites el este flujo, puedes hacer a un lado la función jQuery.get y usar la función jQuery.ajax a la cual le puedes pasar un parametro "async" para decirle que no haga la consulta asincronamente sino sincronamente, el codigo quedaría asi:

Código Javascript:
Ver original
  1. function fnGetVal(txtUrl){
  2.   var jsDescripcion = '';
  3.  
  4.   $.ajax({
  5.   url: txtUrl,
  6.   type: 'GET',
  7.   async: false,
  8.   success: function(data){
  9.   alert("Dato cargado: " + data);
  10.   jsDescripcion = data;
  11.  }
  12.   });
  13.  
  14.  return jsDescripcion;
  15. }

de esta forma si estarias forzando a que el código siga el flujo normal.

Saludos

________________

Argenis Fontalvo
http://argenisfontalvo.brandyourself.com