Bonjour à tous,
Je développe un site web en Ajax.
Mais lorsque je souhaite faire "précédent" ou "suivant" avec les touches du navigateur, je suis directement dirigé hors du site...
J'ai alors trouvé une piste du coté des Frameworks jQuery et jQuery-History qui me permettent d'ajouter une sorte d'ancre et donc de changer l'url de mon site sans charger la page entièrement (ex: "ma_page#1"). Le changement de "div" marche à merveille!
Le problème, c'est qu'il faut que j'arrive à faire passer des variables PHP pour des futures traitement. C'est là que ça bloque... Je ne sais pas comment faire pour envoyer ces variables... J'essaie désespérément de les faire passer par l'url.
Voici le script JavaScript (inséré dans la balise "<head>" ) avec lequel je charge les "div".
Code :
- // On inclut la bibliotheque Jquery
- <script type="text/javascript" src="jquery.js"></script>
- <script type="text/javascript" src="jquery-history.js"></script>
- <script type="text/javascript">
- function pageload(hash) {
- // hash ne contient plus le premier caractère #
- if(hash) {
- /* Traintement de l'ancre */
- if($.browser.msie) {
- hash = encodeURIComponent(hash);
- }
- // "#corps" est le div a rafraichir. tabChaine[0] et [1] contiennent les variables à passer par la méthode GET
- $("#corps" ).load(hash + ".php?tabChaine[0]&tabChaine[1]" );
- }
- else {
- // start page
- $("#corps" ).empty();
- }
- }
- $(document).ready(function(){
- // Initialize history plugin.
- // The callback is called at once by present location.hash.
- $.historyInit(pageload);
- // Sélection de tous les liens "a" ayant l'attribut rel égal à history (valeur arbitraire)
- $("a[rel='history']" ).click(function(){
- //Suppression du mot clé history, pour que les liens ne soient surchargés qu'une seule fois
- this.rel = this.rel.replace(/history/, '');
- // Mise à jour de l'ancre
- hash = this.href;
- //On récupère les paramètres passés par l'url. Chaque "~" sépare un paramètre.
- parametre = hash.split('~');
-
- //Permet de garder seulement l'url de la page, sans les paramètres
- tabChaine=hash.split('#');
- hash = tabChaine[1].split('~')[0];
- // Chargement dans l'historique et appel de pageload
- $.historyLoad(hash);
- // Désactivation du clic du lien "a"
- return false;
- });
- });
- </script>
|
Je fais un lien "<a>" dans la même page, dans la balise "<body>"
Code :
- <a rel="history" href="#promotions~idPromotion=2~idProduit=1" />
|
En gros, j'arrive à récupérer les variables idPromotion et idProduit dans le code JS mais je n'arrive pas ensuite à les faire passer par l'url du div à charger...
Si une âme charitable veut bien m'éclaircir, ce serait formidable et je la remercie d'avance!
Miaks