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

Problema actualizar divs mediante llamada Ajax

Estas en el tema de Problema actualizar divs mediante llamada Ajax en el foro de Frameworks JS en Foros del Web. Buenas, me encuentro realizando un slider con JQuery. Voy explicando los códigos que voy referenciando porque me es más fácil explicar el problema. El html: ...
  #1 (permalink)  
Antiguo 03/10/2011, 06:39
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 8 meses
Puntos: 26
Problema actualizar divs mediante llamada Ajax

Buenas, me encuentro realizando un slider con JQuery. Voy explicando los códigos que voy referenciando porque me es más fácil explicar el problema.

El html:
Código HTML:
Ver original
  1. <div id="refreshByAjax">
  2.     <!-- Meta -->
  3.     <input id="album" type="hidden" value= <?php echo "'$aid'"; ?> ></input>
  4.     <input id="pic" type="hidden" value="0" ></input>
  5.     <!-- Slider -->
  6.     <div id="visor" class="visor">
  7.         <div id="nav">
  8.         <input type="button" id="next" class="boton" value="Next"></input>
  9.            <input type="button" id="last" class="boton" value="Last"></input>
  10.         </div>
  11.         <div id="view">0</div>
  12.     </div>
  13. </div>
Bueno, una vez que se hace click en alguno de los 2 botones (next o last),se ejecuta la petición y se actualiza el div refreshByAjax.
La llamada en JQuery es la siguiente:
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     $("#next").click(function(evento){
  3.         evento.preventDefault();
  4.         var p0 = $("#album").val();
  5.         var p1 = $("#pic").val();
  6.         $("#refreshByAjax").load("drivers/images/next.php",{aid: p0, pic: p1});
  7.     });
  8. })
Y el manejador php es este:
Código PHP:
Ver original
  1. <?php
  2. $index = $_POST['pic'];
  3. $aid = $_POST['aid'];
  4.  
  5.  
  6. include('../db/managerConnection.php');
  7. include('images.inc.php');
  8. $link = conectar();
  9. $path = get_path($aid,$link);
  10. /* Vector con las imagenes */
  11. $imgs = get_images($path,$link);
  12. /* Analizo la imagen a mostrar */
  13. # Total de imagenes:
  14. $total = count($imgs) - 2;
  15. $index++;
  16. if ($index > $total){
  17.     $index = 0;
  18. }
  19. ?>
  20. <!-- Esto se imprime mediante Ajax al div "refreshByAjax" ->
  21. <!-- Meta -->
  22. <input id="album" type="hidden" value= <?php echo $aid; ?> ></input>
  23. <input id="pic" type="hidden" value= <?php echo $index; ?> ></input>
  24. <!-- Slider -->
  25. <div id="visor" class="visor">
  26.     <div id="nav">
  27.         <input type="button" id="next" class="boton" value="Siguiente" ></input>
  28.         <input type="button" id="last" class="boton" value="Anterior"></input>
  29.     </div>
  30.     <div id="view"> <?php echo $index; ?> </div>
  31. </div>
El problema es que, yo a modo de prueba imprimo solo el indice de la foto. Al principio arranca en 0. Luego incrementa correctamente a 1. Pero ya no a 2 y ahí queda.
Firebug no me da errores y el log de php menos. Hay algún error en mi lógica? agradecería cualquier tipo de ayuda.
Saludos.
  #2 (permalink)  
Antiguo 03/10/2011, 07:32
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Problema actualizar divs mediante llamada Ajax

$("#next").click(...

cambiá por live o delegate
http://api.jquery.com/live/
http://api.jquery.com/delegate/

y leé el porqué :)
  #3 (permalink)  
Antiguo 03/10/2011, 07:45
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 8 meses
Puntos: 26
Respuesta: Problema actualizar divs mediante llamada Ajax

Gracias @Dany_s. Al final termine haciendo esto:
el archivo js:
Código Javascript:
Ver original
  1. function last(){
  2.     var p0 = $("#album").val();
  3.     var p1 = $("#pic").val();
  4.     $("#refreshByAjax").load("drivers/images/last.php",{aid: p0, pic: p1});
  5. }
  6.  
  7. function next(){
  8.     var p0 = $("#album").val();
  9.     var p1 = $("#pic").val();
  10.     $("#refreshByAjax").load("drivers/images/next.php",{aid: p0, pic: p1});
  11. }

Y la impresion Ajax final:
Código HTML:
Ver original
  1. <!-- Esto se imprime mediante Ajax al div "refreshByAjax" -->
  2. <!-- Meta -->
  3. <input id="album" type="hidden" value=<?php echo "\"$aid\""; ?> ></input>
  4. <input id="pic" type="hidden" value=<?php echo "\"$index\""; ?> ></input>
  5. <!-- Slider -->
  6. <div id="visor" class="visor">
  7.     <div id="nav">
  8.         <input type="button" id="next" class="boton" value="Siguiente" onclick=next()></input>
  9.         <input type="button" id="last" class="boton" value="Anterior" onclick=last()></input>
  10.     </div>
  11.     <div id="view"> <?php echo $index; ?> </div>
  12. </div>
Al parecer tenía problemas jquery para ejecutar las acciones por cada click y termine por hacer una funcion last y next y asignarlo al evento onclick del botón.
Saludos y gracias.

Etiquetas: ajax, divs, html, jquery, llamada, mediante, php
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 13:46.