Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/06/2010, 14:31
Avatar de neodani
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!