Foros del Web » Programando para Internet » Jquery »

Retornar variables para otra funcion ajax jquery

Estas en el tema de Retornar variables para otra funcion ajax jquery en el foro de Jquery en Foros del Web. Hola amigos.... me he encontrado con el siguiente problema: 1. Tengo una funcion que hace una peticion Ajax - jquery @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : ...
  #1 (permalink)  
Antiguo 01/07/2012, 17:51
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 13 años, 6 meses
Puntos: 3
Pregunta Retornar variables para otra funcion ajax jquery

Hola amigos.... me he encontrado con el siguiente problema:

1. Tengo una funcion que hace una peticion Ajax - jquery

Código Javascript:
Ver original
  1. function miFuncionAjax(variableenviada){
  2. var resp = false;
  3. $(document).ready(function() {
  4.         $.ajax({
  5.             type: 'POST',
  6.             url: 'miscript.php',
  7.             contentType: "application/x-www-form-urlencoded",
  8.             processData: true,
  9.             data:"variableenviada="+variableenviada,
  10.             success: function(data){
  11.                
  12.                 if(data == "yes")
  13.                 {
  14.                     resp = false;
  15.                 }
  16.                 if(data == "no"){
  17.                     resp = true;
  18.                 }
  19.                
  20.             }/*fin success*/
  21.         });
  22.     });
  23.    
  24.      return resp;
  25. }

2. Se supone que la anterior funcion retorna resp.... luego resp la uso para otra funcion....


Código Javascript:
Ver original
  1. function MiFuncionValidadora(){
  2. var variableaenviar = "hola mundo";
  3. var resp = miFuncionAjax(variableaenviar);
  4.  
  5. if(resp)
  6. {
  7. alert("la respuesta fue verdadero");
  8. }
  9. else{
  10. alert("la respuesta fue falso");
  11. }
  12. }


EL PROBLEMA: resp siempre es falso y aunque modifica su valor en el success del ajax, siempre es falso, es como si en el success se modificara pero fuera del document.ready como esta inicializada en false retorna siempre false......

Dentro del ajax es local modifica su valor pero no es la misma var fuera del ajax asi que la funcion de fuera hara el retorno de la variable resp fuera del ajax;

NECESITO SABER COMO RETORNO UNA VARIABLE EN UNA FUNCION A PARA USARLA EN OTRA FUNCION JAVASCRIPT B----!!!! OBVEAMENTE QUE EL VALOR DE ESA VARIABLE SE MODIFIQUE SEGUN LA RESPUESTA AJAX....

DESDE YA GRACIAS!!!
  #2 (permalink)  
Antiguo 02/07/2012, 07:31
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Retornar variables para otra funcion ajax jquery

recuerda que AJAX es asincrono, por eso siempre devuelve false, porque lo que hace el XmlHttpRequest es usar un callback a la función success (realmente el onreadystatechange), por lo que debería aplicar lo mismo en tu función:
Código Javascript:
Ver original
  1. miFuncionAjax(variableaenviar, function(resp) {
  2.     if(resp)
  3.     {
  4.         alert("la respuesta fue verdadero");
  5.     }
  6.     else{
  7.         alert("la respuesta fue falso");
  8.     }
  9. });

y pasar el 2do atributo al success, o llamarlo:

Código Javascript:
Ver original
  1. function miFuncionAjax(variableenviada, my_callback){
  2. var resp = false;
  3. $(document).ready(function() {
  4.         $.ajax({
  5.             type: 'POST',
  6.             url: 'miscript.php',
  7.             contentType: "application/x-www-form-urlencoded",
  8.             processData: true,
  9.             data:"variableenviada="+variableenviada,
  10.             success: function(data){
  11.                 data = $.trim(data); //prevenir caracteres extra del server
  12.                 if(data == "yes")
  13.                 {
  14.                     resp = false;
  15.                 }
  16.                 if(data == "no"){
  17.                     resp = true;
  18.                 }
  19.                 my_callback(resp); //AQUI
  20.             }/*fin success*/
  21.         });
  22.     });
  23.    
  24.      return resp;
  25. }
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 02/07/2012, 13:28
 
Fecha de Ingreso: mayo-2011
Mensajes: 105
Antigüedad: 13 años, 6 meses
Puntos: 3
Respuesta: Retornar variables para otra funcion ajax jquery

Gracias! En verdad si investigando un poco me encontre que ajax es asincrono, para ese tipo de funciones se deberia poner el atributo de asynchronous (no recuerdo como es el nombre correcto) en false, pero eso hace que el navegador quede CONGELADO!!! tu solucion e smuy buena y funciona gracias!!!
  #4 (permalink)  
Antiguo 20/06/2015, 18:43
 
Fecha de Ingreso: junio-2015
Mensajes: 2
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Retornar variables para otra funcion ajax jquery

Gracias!!!! de mi parte tb, que me estaba volviendo loco . En principio con el trim, me funciona para lo que quería.
Esperó que con eso, sea suficiente para tener una solución duradera.
  #5 (permalink)  
Antiguo 17/07/2015, 17:56
 
Fecha de Ingreso: julio-2015
Mensajes: 1
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Retornar variables para otra funcion ajax jquery

tengo un problema similar no logro que me retorne el relsultado de a funcion
tengo el siguiente codigo.
function preciod(fecha){
var fechad = fecha;
$.ajax({
dataType: 'jsonp',
url: 'http://lanacion.cloudapi.junar.com/datastreams/invoke/EVOLU-DEL-PRECI-PARA-LA?auth_key=ca2c9c0b0d5ca8ef62abc462d25aa3a16c1185 95&output=json_array&filter0=column0[==]'+fechad +'&filter1=column1[==]Casas%20de%20cambio&where=(filter0%20and%20filter1 )',
success: function(datos) {
var precio = datos.result[1];
var p2 = precio[2].replace(/,/g,".");
var precio2 = parseFloat(p2).toFixed(2);
precio= precio2;
return precio;




},
error: function() { alert("Error leyendo fichero jsonP"); }
});

alert(precio);
}

y esta otra que pide la consulta pero no retorna nada.



if (valfecha == "ok"){
var fecha1 = fecha.split("-");
var fecha2 = parseInt(fecha1[1]);
var mesesj = ['-ene.-','-feb.-','-mar.-','-abr.-','-may.-','-jun.-','-jul.-','-ago.-','-sep.-','-oct.-','-nov.-','-dic.-'];
var fecmes = mesesj[fecha2-1];
var fech= fecha1[2]+ fecmes + fecha1[0];


predol= preciod(fech);



}else{

error1.innerHTML = valfecha;

}

Etiquetas: ajax, funcion, php, retornar, variables
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 05:22.