Foros del Web » Programando para Internet » Jquery »

Duda pestañas/tabs Ajax + Jquery

Estas en el tema de Duda pestañas/tabs Ajax + Jquery en el foro de Jquery en Foros del Web. Buenas, Quiero hacer un sistema de pestañas, que cuando se pulse cada una de ellas no recargue la página, pero llame a un script vía ...
  #1 (permalink)  
Antiguo 10/06/2010, 14:31
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Duda pestañas/tabs Ajax + Jquery

Buenas,

Quiero hacer un sistema de pestañas, que cuando se pulse cada una de ellas no recargue la página, pero llame a un script vía ajax para que procese la petición y luego muestre el resultado.

La primera duda es si el script que llamo vía ajax, creéis que debería ser el mismo para las 3 pestañas y lo único que cambiara serían los parametros que le paso, o por el contrario, me recomendáis que llame a uno diferente para cada pestaña?

La segunda duda va sobre la implementación. Tengo la estructura de las pestañas montadas pero no consigo que cuando se pulse la pestaña haga la petición en ajax, algo estoy haciendo mal y está en la llamada... me podéis ayudar?

El código es el siguiente:

Código PHP:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/v1.98/DTD/v1.98-strict.dtd">
  2. <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"><head>
  3. <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  4. <title>Pestañas AJAX</title>
  5. <link rel="stylesheet" type="text/css" media="all" href="ejemplo1.css" />
  6. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
  7. <script type="text/javascript">      
  8. $(document).ready(function(){
  9.     //Referencias
  10.     var sections = $("#tabs li");
  11.     var loading = $("#loading");
  12.     var content = $("#descripcion");
  13.    
  14.     //Realizar una peticion por cada tab que se pulse
  15.      sections.click(function(){
  16.         switch(this.id){
  17.             case "tab1":
  18.             showLoading();
  19.                 sections.ajax({
  20.                   url: 'datos.php',
  21.                   type: 'GET',
  22.                   async: true,
  23.                   data: 'tab=1',
  24.                   success: Recibir_Datos
  25.                   //error: muestraError
  26.                 });
  27.             break;
  28.             case "tab2":
  29.                 break;
  30.             case "tab3":
  31.                 break;
  32.             default:
  33.                 hideLoading();
  34.                 break;
  35.         }
  36.  
  37.     });
  38.  
  39.    //Mostrar el gif de carga
  40.     function showLoading(){
  41.         loading
  42.             .css({visibility:"visible"})
  43.             .css({opacity:"1"})
  44.             .css({display:"block"})
  45.         ;
  46.     }
  47.     //Ocultar el gif de carga
  48.     function hideLoading(){
  49.         loading.fadeTo(1000, 0);
  50.     };
  51.    
  52. });
  53.  
  54. function Recibir_Datos (data){
  55.     // Cuando recibimos la respuesta convertimos esa respuesta
  56.     // en html y visualizamos esa respuesta en el div
  57.     // con id "#descripcion" que teníamos oculto en la página HTML
  58.     $("#descripcion").html(data);
  59.     $("#descripcion").show();
  60. }
  61. </script>
  62. </head>
  63. <body>
  64. <div id="menuTabs">
  65.     <ul>
  66.         <li id="tab1"><a href="#">Pestaña 1</a></li>
  67.         <li id="tab2" ><a href="#">Pestaña 2</a></li>
  68.         <li id="tab3"><a href="#">Pestaña 3</a></li>
  69.     </ul>
  70.     <div id="descripcion">
  71.         <div id="loading">
  72.             <img src="loading.gif" alt="Loading..." />
  73.         </div>
  74.     </div>
  75. </div>
  76. </body>
  77. </html>


El ejemplo se puede ver desde aquí
http://fdw.neodani.com/jquery/tabs/ejemplo1.php

Me podéis ayudar?

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 10/06/2010, 16:53
 
Fecha de Ingreso: enero-2008
Ubicación: Buenos Aires
Mensajes: 305
Antigüedad: 16 años, 10 meses
Puntos: 14
Respuesta: Duda pestañas/tabs Ajax + Jquery

yo lo haría con $.load()
  #3 (permalink)  
Antiguo 11/06/2010, 00:07
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: Duda pestañas/tabs Ajax + Jquery

Buenas,

Lo he probado con load, carga el contenido de la pagina... pero se le puede pasar alguna variable a la pagina tab1_contenido.php ? de ser así como la recibo en tab1_contenido.php?

Código Javascript:
Ver original
  1. sections.click(function(){
  2.         showLoading();
  3.         switch(this.id){
  4.             case "tab1":
  5.                 $("#descripcion").load("tab1_contenido.php", hideLoading);
  6.             break;
  7.             case "tab2":
  8.                 break;
  9.             case "tab3":
  10.                 break;
  11.             default:
  12.                 hideLoading();
  13.                 break;
  14.         }
  15.  
  16.     });

Gracias de antemano!
  #4 (permalink)  
Antiguo 12/06/2010, 00:03
 
Fecha de Ingreso: abril-2008
Ubicación: MDQ
Mensajes: 54
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Duda pestañas/tabs Ajax + Jquery

en mi web www.timersys.com tengo una navegacion en pestañas con ajax. Mira el código con firebug a ver si te sirve. Saludoss
  #5 (permalink)  
Antiguo 13/06/2010, 12:29
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: Duda pestañas/tabs Ajax + Jquery

Cita:
Iniciado por chifliiiii Ver Mensaje
en mi web www.timersys.com tengo una navegacion en pestañas con ajax. Mira el código con firebug a ver si te sirve. Saludoss
Esta bien, pero no veo que le pases ninguna variable ni por GET ni POST a las paginas que cargas no?

var toLoad= 'programas.php #contenido';
var toLoad= 'index.php #contenido';



Código Javascript:
Ver original
  1. $('#programas a').click(function(){
  2.                 var toLoad= 'programas.php #contenido';
  3.                 $('#contenido').fadeTo('slow',0.1,loadcontent);
  4.                
  5.                 function  loadcontent(){
  6.                     $('#contenido').load(toLoad,showContent);
  7.                     $('body').removeClass();
  8.                 }
  9.                 function showContent(){
  10.                         $('#contenido').fadeTo('slow',1);
  11.                         $('body').addClass('programas');
  12.                         comienzo();
  13.                 }
  14.     });                
  15.     $('#home a').click(function(){
  16.                 var toLoad= 'index.php #contenido';
  17.                 $('#contenido').fadeTo('slow',0.1,loadcontent);
  18.                
  19.                 function  loadcontent(){
  20.                     $('#contenido').load(toLoad,showContent);
  21.                     $('body').removeClass();
  22.                 }
  23.                 function showContent(){
  24.                         $('#contenido').fadeTo('slow',1);
  25.                         $('body').addClass('index');
  26.                         comienzo();
  27.                 }
  28.                
  29.     });

Me interesa poder pasar variables a la pagina que carga, de este modo puedo utilizar una única pagina y según la variable que le envíe me cargue uno u otro contenido, sabéis si esto es posible?

Muchas gracias de antemano
  #6 (permalink)  
Antiguo 14/06/2010, 06:04
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: Duda pestañas/tabs Ajax + Jquery

Conseguí pasarle parámetros por GET a la instrucción .load()

Alguien me puede decir como pasarle parámetros por POST a esta instrucción?
En la pagina del manual no lo he visto

http://api.jquery.com/load/

Muchas gracias de antemano
  #7 (permalink)  
Antiguo 14/06/2010, 07:45
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: Duda pestañas/tabs Ajax + Jquery

Cita:
Iniciado por neodani Ver Mensaje
Conseguí pasarle parámetros por GET a la instrucción .load()

Alguien me puede decir como pasarle parámetros por POST a esta instrucción?
En la pagina del manual no lo he visto

http://api.jquery.com/load/

Muchas gracias de antemano
Conseguido! si pones las variables entre llaves de la siguiente forma lo trata como POST

$("#descripcion").load("tabs.php", {'opcion':'1', 'answer':'yes'}, hideLoading);

y en tabs.php puedes tener algo similar a

if ($_POST['opcion']==1){
echo "escogiste la OPCION NUMERO 1";
}

Saludos!

Etiquetas: ajax
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:57.