2009-05-24 7 views
0

J'utilise une interface à onglets jquery ici http://www.imashdigital.com/#2 et je voudrais retourner le numéro de l'onglet en php.récupérer window.location.hash url en php

Idéalement, je voudrais exécuter une fonction javascript (sur une minuterie) qui met à jour en permanence une variable php globale avec l'onglet actuel.

En fonction de cette valeur php, de 1 à 4, je chargerai ensuite une barre latérale différente.

Je serais reconnaissant pour toute aide et quelques exemples de code que je suis un novice.

Amitiés

Jonathan

+1

Pourquoi ne pas simplement changer la barre latérale en fonction de l'onglet lorsque l'onglet est sélectionné? – cgp

Répondre

1

Je vous suggère de ne pas exécuter une minuterie, mais plutôt fixer le .post $ à l'événement « activation de l'onglet ». Cela fera en sorte que n'importe quel changement d'onglet sera appliqué en temps réel et cela ne déclenchera pas de demandes inutiles.

2

La partie d'un URI qui vient après le hachage n'est jamais envoyée au serveur. Il n'y a aucun moyen que PHP puisse y accéder. Utilisez plutôt un paramètre querystring ($_GET). Ou utilisez un script côté client (javascript).

+0

hum, je ne sais pas si vous êtes celui qui m'a downvoted, mais le hachage passe très bien en utilisant ma méthode –

+0

Script côté client est en réalité ce qui a été suggéré dans l'exemple de Paolo, n'est ce pas? – PepperBob

+0

PepperBob: Je voulais dire le script côté client seul. L'exemple de Paolo stocke l'état du côté serveur. Je suppose que la vraie question est pourquoi Jonathan veut connaître l'onglet sélectionné en PHP? – troelskn

0

J'ai utilisé des panneaux à onglets dans quelques projets récents, et la solution que je l'ai utilisé est le suivant:

HTML

<ul class="tabs"> 
    <li><a href="#en_en">English</a></li> 
    <li><a href="#fr_fr">Français</a></li> 
</ul> 
<div class="panel" id="en_en"><!-- Content --></div> 
<div class="panel" id="fr_fr"><!-- Content --></div> 

jQuery

// the currently selected tab, or a default tab (don't forget to prepend the #) 
var tab = location.hash || '#en_en'; 

// register a click handler on all the tabs 
$('ul.tabs a').click(function(event){ 
    event.preventDefault(); // prevents the browser from scrolling to the anchor 

    // hide all panels, then use the link's href attribute to find 
    // the matching panel, and make it visible 
    // you can, of course, use whatever animation you like 
    $('div.panel').hide().filter( $(this).attr('href') ).show(); 

).filter('[href*='+tab+']').click(); 
// above: in case of refreshing/bookmarking: find the tab link that contains 
// the current location.hash, and fire its click handler 

Cela fonctionne bien car le code côté serveur n'a pas besoin de savoir quel onglet est sélectionné, mais il prend également en charge l'actualisation ou la mise en favori d'un onglet spécifique sans que l'utilisateur ne doive à nouveau sélectionner l'onglet.

Questions connexes