Foros del Web » Programando para Internet » Jquery »

Problema funciones Xajax

Estas en el tema de Problema funciones Xajax en el foro de Jquery en Foros del Web. Soy principiante con ajax y me encontré el primer problema que no puedo solucionar. Tengos dos funciones ajax, una que monta un select dinámico y ...
  #1 (permalink)  
Antiguo 07/12/2012, 14:25
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 9 meses
Puntos: 14
Problema funciones Xajax

Soy principiante con ajax y me encontré el primer problema que no puedo solucionar. Tengos dos funciones ajax, una que monta un select dinámico y otra que en base a la selección anterior muestra o no ciertos datos, es decir, tengo dos funciones. Por separado funcionan pero juntas no. Ejemplo:

Código Javascript:
Ver original
  1. <script language="JavaScript" type="text/JavaScript">
  2.  
  3.     $(document).ready(function(){
  4.        
  5. //Monta el select de forma correcta
  6.            xajax_montar_select();
  7.  
  8.         //Detectando el valor del select "NO FUNCIONA SI EL SELECT SE HA MONTADO CON LA FUNCION ANTERIOR"
  9.  
  10.         $("#padre").change(function(){
  11.              var id = $('#padre').val();
  12.              var name = $("#padre option:selected").text();
  13.  
  14.             //Invocamos al método de xajax
  15.                  xajax_mostrar_padreHijo(id,name);
  16.            });
  17.     });
  18. </script>

Código Javascript:
Ver original
  1. <script language="JavaScript" type="text/JavaScript">
  2.  
  3.     $(document).ready(function(){
  4.        
  5. //Monta el select de forma correcta
  6.            //xajax_montar_select();
  7.  
  8.         //Detectando el valor del select "FUNCIONA CORRECTAMENTE PORQUE EL SELECT HA SIDO ESCRITO EN LA MISMA PAGINA DE FORMA ESTATICA"
  9.  
  10.         $("#padre").change(function(){
  11.              var id = $('#padre').val();
  12.              var name = $("#padre option:selected").text();
  13.  
  14.             //Invocamos al método de xajax
  15.                  xajax_mostrar_padreHijo(id,name);
  16.            });
  17.     });
  18. </script>

Los dos html que tiran las dos opciones son idénticos, pero si el select viene de la funcion montar_select no consigo activar el jquery que detecta la opción.
  #2 (permalink)  
Antiguo 07/12/2012, 14:28
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 9 meses
Puntos: 14
Respuesta: Problema funciones Xajax

Lo he conseguido pasando el javascript por la primera función xajax de esta manera.

Código Javascript:
Ver original
  1. $respuesta->script('$("#padre").change(function(){ var id = $("#padre").val(); var name = $("#padre option:selected").text(); xajax_mostrar_padreHijo(id,name);
  2.    
  3.        });');

Alguien me explica por qué o si hay otra manera? Gracias :)
  #3 (permalink)  
Antiguo 07/12/2012, 14:31
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Problema funciones Xajax

¿Qué tienes en la función xajax_montar_select()? Es posible que estés intentando añadir el listener del evento cuando el elemento todavía no existe.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 07/12/2012, 14:36
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 9 meses
Puntos: 14
Respuesta: Problema funciones Xajax

Te dejo el código dela función.

Código Javascript:
Ver original
  1. function montar_select(){
  2.    
  3.      include ('conexionlite.php');
  4.    
  5.         // Preparamos la sentencia y sacamos el array de datos PDO SQLite
  6.           $sql=("SELECT * FROM menu WHERE padre='0'");
  7.        
  8.         $salida = '<select name="padre" id="padre">';
  9.         $salida.='<option value="0">-Seleccione una opcción-</option>';
  10.         $salida.='<option value="1">-Nuevo Padre-</option>';
  11.  
  12.  
  13.      foreach ($dbh->query($sql) as $row) {
  14.          
  15.         $salida.='<option value="'.$row['id'].'">'.$row['nombre'].'</option>';
  16.        
  17.     }
  18.  
  19.               $salida.='</select>';
  20.  
  21.            
  22.             //Instanciamos el objeto para generar la respuesta con ajax
  23.             $respuesta = new xajaxResponse();
  24.             //escribimos en la capa con id="respuesta" el texto que aparece en $salida
  25.             $respuesta->assign("divPadre","innerHTML",$salida);
  26.             $respuesta->script('$("#padre").change(function(){ var id = $("#padre").val(); var name = $("#padre option:selected").text(); xajax_mostrar_padreHijo(id,name);
  27.    
  28.       });');
  29.  
  30.  
  31. //Tenemos que devolver la instancia del objeto xajaxResponse
  32. return $respuesta;
  33.  
  34. }
  #5 (permalink)  
Antiguo 07/12/2012, 18:43
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Problema funciones Xajax

Ya veo, sí, efectivamente pasa lo que te indiqué, que estabas asignando el evento antes de que el elemento exista.

La forma como lo resolviste es correcta, quizás en lugar todo el código allí puedes crear una función y en $respuestas->script solo colocas la llamada a esa función.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.

Etiquetas: ajax, funcion, funciones, html, javascript, xajax
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 00:36.