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

Iconvenientes php ajax

Estas en el tema de Iconvenientes php ajax en el foro de Frameworks JS en Foros del Web. hola amigos del foro espero me puedan ayudar me encuentro trabajando con modal dialog form de jquery en esta pagina tengo una tabla donde listo ...
  #1 (permalink)  
Antiguo 10/06/2012, 20:03
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Iconvenientes php ajax

hola amigos del foro espero me puedan ayudar

me encuentro trabajando con modal dialog form de jquery

en esta pagina tengo una tabla donde listo los registros de la base de datos
y tengo una un boton
Código HTML:
Ver original
  1. <button id="create-user">Insertar Nuevo Destinatario</button>
que abre una ventana modal con un formulario para ingresar un nuevo registro y utulizo ajax para cargar de nuevo la tabla con los registros de la base de datos incluyendo en nuevo registro.


Código Javascript:
Ver original
  1. $.ajax({
  2.                   url:'archivo.php',
  3.                   type:'post',
  4.                   data:'name='+namec+'&email='+emailc+'&password='+passwordc,
  5.                   }).done(function() {
  6.                   cargar_usuarios();
  7.                  })

Código Javascript:
Ver original
  1. function cargar_usuarios() {
  2.  * * $.ajax({
  3.  * * * * *url: 'views/cargar_usuarios.php',
  4.  * * * * *type:'get',
  5.  * * * * *cache:false,
  6.  * * * * *success: function(data) {
  7.  * * * * * * * $('#div_tabla_usuario').html(data);
  8.  * * * * *}
  9.  * * });
  10. }

cargar de nuevo la tabla con los registros de la base de datos incluyendo en nuevo registro.

en esta parte es donde tengo el problema ya que en una parte de la tabla tengo 3 iconos botones que son para consultar ,modificar,eliminar.
al darle click a cada botton se abren una ventana modal correspondiente al metodo o sea consultart, modificar,eliminar. estas ventanas se abren en la pagina inicial pero si se inserta un nuevo registro cuando mediante ajax devuelvo cargar_usuarios.php ya no tienen comportamiento los botones.

que estoy haciendo mal

a continuacion comparto mi cargar_usuarios.php


Código PHP:
Ver original
  1. <?
  2. $servidor = 'localhost';
  3. $bd = 'correo';
  4. $usuario = 'postgres';
  5. $contrasenia = 'hoe798cs';
  6.    
  7. global $servidor, $bd, $usuario, $contrasenia;
  8. $db = new PDO('pgsql:host=' . $servidor . ';dbname=' . $bd, $usuario, $contrasenia);
  9.  
  10.  
  11. $consulta = $db->prepare("SELECT * FROM correo order by id");
  12. $consulta->execute();
  13.  
  14. ?>
  15.  
  16. <div id='div_tabla_usuario'>
  17.  
  18. <table width="100%" class="ui-widget ui-widget-content" id="users">
  19.         <thead>
  20.             <tr class="ui-widget-header ">
  21.                 <th width="12%">N°</th>
  22.                 <th width="15%">Destinatario</th>
  23.                 <th width="9%">Email</th>
  24.                 <th width="11%">Telefono</th>
  25.                 <th width="11%">Telefono</th>
  26.                 <th width="8%">Fax</th>
  27.                 <th width="20%">Web</th>
  28.                 <th width="14%"><div align="center">Acciones</div></th>
  29.  
  30.             </tr>
  31.         </thead>
  32. <?     
  33. while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
  34.     {
  35.  
  36.     echo    "<tbody>";
  37.             echo"<tr>";
  38.                   echo "<td align='center'>" .$fila['id'] . "</td>";
  39.                   echo "<td align='center'>" .$fila['name'] . "</td>";
  40.                   echo "<td align='center'>" .$fila['email'] . "</td>";
  41.                   echo "<td align='center'></td>";
  42.                   echo "<td align='center'></td>";
  43.                   echo "<td align='center'></td>";
  44.                   echo "<td> <input type='checkbox' name='checkbox' value='checkbox' /></td>";
  45.                   echo "<td><div class='fg-toolbar'>
  46.     <button class='fg-button ui-state-default ui-corner-all' title='Consultar' id=''><span class='ui-icon ui-icon-search'></span></button>
  47.     <button class='fg-button ui-state-default ui-corner-all' title='Modificar' id=''><span class='ui-icon ui-icon-pencil'></span></button>
  48.     <button class='fg-button ui-state-default ui-corner-all' title='Eliminar'  id=''><span class='ui-icon ui-icon-trash'></span></button>
  49.     </div></td>";
  50.             echo"<tr>";
  51.         echo"</tbody>";
  52.    
  53.        
  54.         }
  55.         ?>
  56.         </table></div>


para mi el inconveniente es en esta parte pero no se como debo hacerlo para que funcione


echo "<td><div class='fg-toolbar'>
<button class='fg-button ui-state-default ui-corner-all' title='Consultar' id=''><span class='ui-icon ui-icon-search'></span></button>
<button class='fg-button ui-state-default ui-corner-all' title='Modificar' id=''><span class='ui-icon ui-icon-pencil'></span></button>
<button class='fg-button ui-state-default ui-corner-all' title='Eliminar' id=''><span class='ui-icon ui-icon-trash'></span></button>
</div></td>";

Última edición por Montes28; 10/06/2012 a las 20:23
  #2 (permalink)  
Antiguo 11/06/2012, 07:12
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Iconvenientes php ajax

Cita:
Iniciado por Montes28 Ver Mensaje
pero si se inserta un nuevo registro cuando mediante ajax devuelvo cargar_usuarios.php ya no tienen comportamiento los botones.

que estoy haciendo mal
Vos lo dijiste. Si insertás nuevos elementos, estos no tienen asignado ningún event handler. Tu script se los asignó a los elementos que existían en el momento de ejecutarse.

Para solucionarlo podés mirar a las funciones:

.live()
.delegate()
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 11/06/2012, 07:32
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Iconvenientes php ajax

gracias por responder Naahuel

tengo un par de dudas .live() ,.delegate() los coloco en cargar_usuarios.php ? o en la inicial
  #4 (permalink)  
Antiguo 11/06/2012, 07:34
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Iconvenientes php ajax

No sé qué es cargar_usuario.php

Las colocás en la página donde necesitás realizar acciones con los elementos...
__________________
nahueljose.com.ar
  #5 (permalink)  
Antiguo 11/06/2012, 07:37
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Iconvenientes php ajax

en cargar_usuario tengo esto

Código PHP:
Ver original
  1. echo "<td><div class='fg-toolbar'>
  2.     <button class='fg-button ui-state-default ui-corner-all' title='Consultar' id=''><span class='ui-icon ui-icon-search'></span></button>
  3.     <button class='fg-button ui-state-default ui-corner-all' title='Modificar' id=''><span class='ui-icon ui-icon-pencil'></span></button>
  4.     <button class='fg-button ui-state-default ui-corner-all' title='Eliminar'  id=''><span class='ui-icon ui-icon-trash'></span></button>
  5.     </div></td>";


que hace parte de <div id='div_tabla_usuario'> y este div es el que se actualiza en la otra pagina despues de una insercion

Código Javascript:
Ver original
  1. $.ajax({
  2.                   url:'archivo.php',
  3.                   type:'post',
  4.                   data:'name='+namec+'&email='+emailc+'&password='+passwordc,
  5.                   }).done(function() {
  6.                   cargar_usuarios();
  7.                  });


Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     function cargar_usuarios() {
  3.  * * $.ajax({
  4.  * * * * *url: 'views/cargar_usuarios.php',
  5.  * * * * *type:'get',
  6.  * * * * *cache:false,
  7.  * * * * *success: function(data) {
  8.  * * * * * * * $('#div_tabla_usuario').html(data);
  9.  * * * * *}
  10.  * * });
  11. }
  12.  
  13.  
  14.     </script>
  #6 (permalink)  
Antiguo 11/06/2012, 07:40
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Iconvenientes php ajax

No entiendo... ¿dónde decís qué tienen que hacer los botones?
__________________
nahueljose.com.ar
  #7 (permalink)  
Antiguo 11/06/2012, 07:42
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Iconvenientes php ajax

en la inicial

pero me da dificultad implementar lo que dices


Código Javascript:
Ver original
  1. $('div[class=fg-toolbar] :button').on('click',function() {
  2.     //alert($(this).val());
  3.    
  4.     $('div[class=fg-toolbar] :button').on('click',function() {
  5.     var titulo = $(this).attr('title');
  6.     var idc=$(this).attr('id');
  7.     switch(titulo) {
  8.         case 'Consultar':
  9.             $( "#dialog-consultar" ).dialog( "open" );
  10.             //$( "#dialog-consultar" ).text(idc+" "+"Oscar");
  11.            
  12.                  $.ajax({
  13.                   url:'views/consultar2.php',
  14.                   type:'post',
  15.                   data:'id='+idc,
  16.                   }).done(function(data) {
  17.                   $("#consulta2").html(data);
  18.                
  19. });
  20.  
  21.             break;
  22.         case 'Modificar':
  23.             //alert('boton modificar');
  24.             break;
  25.         case 'Eliminar':
  26.            $( "#dialog-confirm" ).dialog( "open" );
  27.            //$( "#dialog-confirm" ).text(idc+" "+"Oscar");
  28.             $.ajax({
  29.                   url:'views/consultar.php',
  30.                   type:'post',
  31.                   data:'id='+idc,
  32.                   }).done(function(data) {
  33.                   $("#consulta").html(data);
  34. });
  35.            //
  36.            
  37.          
  38.            
  39.             break;
  40.     }
  41. });
  #8 (permalink)  
Antiguo 11/06/2012, 07:56
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Iconvenientes php ajax

¿Me podés explicar la lógica en esto?

Código Javascript:
Ver original
  1. $('div[class=fg-toolbar] :button').on('click',function() {    
  2.     $('div[class=fg-toolbar] :button').on('click',function() {
  3.     // ...
  4.     }
  5. }

1ro.- ¿Por qué uno dentro del otro? Eso implicaría que al recién luego de clickear un botón, recién allí se asignaría la acción a otro botón. Pero en tu caso es totalmente inútil porque los selectores son iguales :S Realmente no entiendo que hiciste ahí.

2do.- ¿Qué es div[class=fg-toolbar] :button? :| O sea, un div con la clase fg-toolbar que está en estado button? :| :| ¿Acaso no son elementos <button> con clase fg-toolbar? No debería ser así entonces:
Código Javascript:
Ver original
  1. $('button.fg-toolbar')

3ro.- Después de corregir lo que te menciono más arriba, sólo deberías cambiar .on por .live

Mirá la diferencia entre estos dos ejemplos:

Usando .on: http://jsbin.com/anufic/
Fijate que si hacés click en "primer <p>" se genera un segundo <p> con el texto "<p> generado", pero si hacés click en este <p> generado, no se siguen agregando <p>'s pues este último parrafo generado ya no tiene la función asignada.

Usando .live: http://jsbin.com/anufic/2/
Si te fijás acá, haciendo click en cualquier <p> la función se dispara, incluso en <p>'s generados dinámicamente.
__________________
nahueljose.com.ar
  #9 (permalink)  
Antiguo 11/06/2012, 08:28
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Iconvenientes php ajax

Naahuel gracias por responder

ya revise el
1ro.- ¿Por qué uno dentro del otro? .... selectores son iguales :S Realmente no entiendo que hiciste ahí.

si el error fue mio ya lo organize

y en
2do.- ¿Qué es div[class=fg-toolbar] :button? ......


aplico lo que me indicas y no me funciona $('button.fg-toolbar')

$('button.fg-toolbar').live('click',function() {.....

estoy generando los botones
<td><div class='fg-toolbar'>
<button class='fg-button ui-state-default ui-corner-all' title='Consultar' id='<? echo $field['id'] ?>'><span class='ui-icon ui-icon-search'></span></button>
<button class='fg-button ui-state-default ui-corner-all' title='Modificar' id='<? echo $field['id'] ?>'><span class='ui-icon ui-icon-pencil'></span></button>
<button class='fg-button ui-state-default ui-corner-all' title='Eliminar' id='<? echo $field['id'] ?>'><span class='ui-icon ui-icon-trash'></span></button>
</div></td>


y en 3ro que me indicas

de esta menra si me funciona

Código Javascript:
Ver original
  1. $('div[class=fg-toolbar] :button').live('click',function() {
  2.     var titulo = $(this).attr('title');
  #10 (permalink)  
Antiguo 11/06/2012, 08:29
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Iconvenientes php ajax

me sirvieron mucho tus consejos pero si quiero saber que diferencias hay entre

$('div[class=fg-toolbar] :button').live('click',function() { ..... y $('button.fg-toolbar')
  #11 (permalink)  
Antiguo 11/06/2012, 08:34
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Iconvenientes php ajax

No te funciona porque me equivoqué yo. Debería ser:
Código Javascript:
Ver original
  1. $('button.fg-button')

Un selector de jQuery es igual a uno CSS.

button.fg.button significa seleccionar elementos <button> que tengan la clase fg-button.
div[class=fg-toolbar] :button' Yo creo que acá los dos puntos son ignorados y por eso te funciona. Los dos puntos indican estado o algún selector avanzado (:hover, :visible, :last-child, etc). En tu caso (suponiendo que los dos puntos son ignorados) signfica:

Seleccionar elementos button dentro de divs que tenga un atributo class igual a fg-toolbar. Medio complicado ¿No? Es más fácil decir todos los buttons con clase fg-button.
__________________
nahueljose.com.ar
  #12 (permalink)  
Antiguo 11/06/2012, 08:43
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Iconvenientes php ajax

gracias por la explicacion

en la ventanas modal de jquery tiene un icono de x para cerrar la ventana como hago para limpiar un div al cerrar mediante el icono
  #13 (permalink)  
Antiguo 11/06/2012, 08:53
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Iconvenientes php ajax

No sé, eso dependerá del plugin que estés usando. Hay cientos de ventanas modales para jQuery. Revisá en la documentación del plugin que estas utilizando.
__________________
nahueljose.com.ar

Etiquetas: ajax, formulario, html, php, registro, sql, tabla, usuarios
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 17:13.