Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Por qué no me llega el valor ?

Estas en el tema de Por qué no me llega el valor ? en el foro de Jquery en Foros del Web. Hola amigos, tengo 2 funciones, desde la primera llamo a la segunda y no medevuelv nada, creo que es porque RES se crea dentro de ...
  #1 (permalink)  
Antiguo 06/08/2014, 04:21
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años
Puntos: 5
Por qué no me llega el valor ?

Hola amigos, tengo 2 funciones,

desde la primera llamo a la segunda y no medevuelv nada, creo que es porque RES se crea dentro de la función y por eso no llega que puedo hacer?

FUNCION 2 LLAMDA POR FUNCION 1

Código Javascript:
Ver original
  1. function cargarPuntos(tipo){
  2.     //alert('Tip Car'+tipo);
  3.     var url = '../../js/actionsAdmin/tipoMapa.php?tipo='+tipo;
  4.     $.get(url, function(res){
  5.         return res;
  6.     });
  7. }

Necesito hacer llegar el RES de la función anterior a esta siguiente pero no lo consigo

FUNCION 1 LLAMA A LA FUNCION 2

Código Javascript:
Ver original
  1. function muestraMapa(tipo){
  2.     alert('Tip Mu'+tipo);
  3.     var popup;
  4.     var n = 1;
  5.     var options = {
  6.         zoom: 6
  7.         , center: new google.maps.LatLng(39.862831600000000000, -4.027323099999990000)
  8.         , mapTypeId: google.maps.MapTypeId.ROADMAP
  9.     };
  10.  
  11.     var map = new google.maps.Map(document.getElementById('map'), options);
  12.     var place = new Array();
  13.  
  14.     cargarPuntos(tipo);  //AQUI LA LLAMO PERO DEVUELVE UNDEFINED
  15.  
  16.     for(var i in place){
  17.         var marker = new google.maps.Marker({
  18.             position: place[i]
  19.             , map: map
  20.             , title: i
  21.             , icon: 'http://gmaps-samples.googlecode.com/svn/trunk/markers/red/marker' + n++ + '.png'
  22.         });
  23.  
  24.         google.maps.event.addListener(marker, 'click', function(){
  25.             if(!popup){
  26.                 popup = new google.maps.InfoWindow();
  27.             }
  28.             var note = '' + this.title + '';
  29.             popup.setContent(note);
  30.             popup.open(map, this);
  31.         })
  32.     }
  33. };

Muchas gracias por adelantado
  #2 (permalink)  
Antiguo 06/08/2014, 05:19
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Por qué no me llega el valor ?

Devuelve undefined porque ejecutas la sentencia return desde dentro de la función de callback. Tienes que hacerlo desde fuera:

Código Javascript:
Ver original
  1. function cargarPuntos(tipo){
  2.     var url = '../../js/actionsAdmin/tipoMapa.php?tipo='+tipo,
  3.         resultado;
  4.     $.get(url, function(res){
  5.         resultado = res;
  6.     });
  7.     return resultado;
  8. }
  #3 (permalink)  
Antiguo 06/08/2014, 08:12
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años
Puntos: 5
Respuesta: Por qué no me llega el valor ?

Hola, muchas gracias por la respuesta, pero...

me llega vacío, compruebo el PHP que me devuelve los datos y está bien, que puede estar pasando?

He comprobado y se imprime primero resultado y después res por eso no me llega, porque cuando le pasa el resultado a la función 2 aun no lo ha devuelto, como puedo solucionar esto?

Código Javascript:
Ver original
  1. function cargarPuntos(tipo){
  2.     alert('Tip Car'+tipo);
  3.     var url = '../../js/actionsAdmin/tipoMapa.php?tipo='+tipo;
  4.     $.get(url, function(res){
  5.         alert('Res '+res);DESPUES SE IMPRIME ESTO Y LLEGA LLENO
  6.         resultado = res;
  7.     });
  8.     alert('Resultado '+resultado); //PRIMERO SE IMPRIME ESTO Y LLEGA VACIO
  9.     return resultado;
  10. }

Última edición por Benderzuelo; 06/08/2014 a las 08:33
  #4 (permalink)  
Antiguo 06/08/2014, 10:02
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Por qué no me llega el valor ?

Solo por curiosidad, ¿no has pensado en colocar el código de la segunda función dentro de la primera? Digo, siendo una función tan pequeña, no creo que cause inconvenientes. Y si la deseas reutilizar desde otro lado, pues la conservas afuera mientras que en la primera función habría una copia de la misma.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 06/08/2014, 10:13
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años
Puntos: 5
Respuesta: Por qué no me llega el valor ?

Cita:
Iniciado por Alexis88 Ver Mensaje
Solo por curiosidad, ¿no has pensado en colocar el código de la segunda función dentro de la primera? Digo, siendo una función tan pequeña, no creo que cause inconvenientes. Y si la deseas reutilizar desde otro lado, pues la conservas afuera mientras que en la primera función habría una copia de la misma.

Saludos
Me ha parecido buena idea pero mira... he hecho lo siguiente

Código Javascript:
Ver original
  1. function muestraMapa(tipo){
  2.     //alert('Tip Mu'+tipo);
  3.     var popup;
  4.     var n = 1;
  5.     var options = {
  6.         zoom: 6
  7.         , center: new google.maps.LatLng(39.862831600000000000, -4.027323099999990000)
  8.         , mapTypeId: google.maps.MapTypeId.ROADMAP
  9.     };
  10.  
  11.     var map = new google.maps.Map(document.getElementById('map'), options);
  12.     var place = new Array();
  13.     //CODIGO DENTRO
  14.         var tipo = $('#subservicios').val();
  15.     var url = '../../js/actionsAdmin/tipoMapa.php?tipo='+tipo;
  16.     $.get(url, function(res){
  17.         $(document).html(res);
  18.     });
  19.     //FIN CODIGO DENTRO
  20.    
  21.     if(resultado == undefined || resultado == ''){
  22.         alert('Entro 1');
  23.         <?php echo portal::arrayPuntosJS(); ?>
  24.     }/*else{
  25.         alert('Entro 2');
  26.         alert('FUNC '+cargarPuntos(tipo));
  27.        
  28.     }*/
  29.     for(var i in place){
  30.         var marker = new google.maps.Marker({
  31.             position: place[i]
  32.             , map: map
  33.             , title: i
  34.             , icon: 'http://gmaps-samples.googlecode.com/svn/trunk/markers/red/marker' + n++ + '.png'
  35.         });
  36.  
  37.         google.maps.event.addListener(marker, 'click', function(){
  38.             if(!popup){
  39.                 popup = new google.maps.InfoWindow();
  40.             }
  41.             var note = '' + this.title + '';
  42.             popup.setContent(note);
  43.             popup.open(map, this);
  44.         })
  45.     }
  46. };


lo que no se es si lo estoy haciendo bien o que¡¡, te comento esto es un mapa de gmaps, y lo que me devuelve esta función es los puntos de personas que cumplan los requisitos de una selección, es un array que tiene que ir justo ahí donde he puesto la función, pero el código que me devuelve quiero que se pinte justo ahí y si hago un alert dentro de la función $.GET imprime el resultado bien pero fuera de la función esta vacio o no existe....

No debo hacer para que me pinte el array ahí justo cuando me devuelve el valor el PHP?

La función php portal::arrayPuntosJS(); me devuelve eso, esta función acepta un parámetro que es el valor de la variable "tipo" de JavaScript pero tampoco se como pintarla dentro del paréntesis :(
  #6 (permalink)  
Antiguo 06/08/2014, 10:44
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Por qué no me llega el valor ?

Creo que te va a tocar hacerlo dentro del callback de $.get, es decir, dentro del entorno de la respuesta de la petición asíncrona.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 06/08/2014, 10:45
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años
Puntos: 5
Respuesta: Por qué no me llega el valor ?

Tengo muy pocos conocimientos de JQ, me puedes poner un pequeño ejemplo por favor?
  #8 (permalink)  
Antiguo 06/08/2014, 10:56
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Por qué no me llega el valor ?

Me refiero a que lo hagas dentro de la función que colocas como segundo argumento en el método $.get pues es ahí en donde recibes la respuesta que deseas.

Código Javascript:
Ver original
  1. $.get(url, function(res){
  2.     $(document).html(res);
  3.     //Acá haces todo lo que deseas
  4. });

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 07/08/2014, 01:14
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años
Puntos: 5
Respuesta: Por qué no me llega el valor ?

Gracias Alexis pero tampoco funciona. Al final lo haré recargando pagina y ya está, pero no quería llegar a eso

Saludos
  #10 (permalink)  
Antiguo 07/08/2014, 08:49
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Por qué no me llega el valor ?

Algo debes de haber hecho mal para que no funcione correctamente, pero si decidiste hacerlo sin Ajax, pues adelante.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: funcion, javascript, js, llega, php, valor
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:45.