Passage de paramètre: Jquery history

Fermé
miaks - 23 févr. 2010 à 18:24
miaks Messages postés 1 Date d'inscription mardi 23 février 2010 Statut Membre Dernière intervention 10 mai 2010 - 10 mai 2010 à 11:40
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".

<!-- 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>"
<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
A voir également:

2 réponses

Salut,
J'utilise aussi JQuery pour faire un site web dans le cadre d'un stage. Pour passer les parametres JS, on utilise la fonction ajax():http://jquery.jarodxxx.com/manuel/Les-fonctions-AJAX/ajax/

c'est une fonction qui recharge la page et tu peux lui passer les variables en POST dans données. Apres dans ta page php, tu fais un test if (isset($_POST[machin])) et tu recupere tes données.
Voila, je sais pas si ça te servira mais j'aurais essayé :D
0
miaks Messages postés 1 Date d'inscription mardi 23 février 2010 Statut Membre Dernière intervention 10 mai 2010
Modifié par miaks le 10/05/2010 à 11:42
Salut john!!

Merci pour ta réponse ^^. Sa fait un moment que j'attendais de l'aide mais sans résultat jusqu'à maintenant :) .

J'avais déjà vu cette cette fonction mais je n'ai toujours pas compris son fonctionnement... Si j'utilise cette méthode, je n'ai donc plus besoin du code que j'ai précédemment poster ???

Si tu pouvais me montrer un petit exemple concret de son fonctionnement, ce serait génial :D. J'ai regardé les exemples de la documentation que tu m'a indiqué mais je ne comprend toujours pas comment passer les paramètres PHP...

Merci beaucoup pour ton aide!!!

PS: Je passe le bts cette semaine donc je ne serai pas très présent pour poursuivre le problème... Par contre, la semaine prochaine, il n'y a pas de problème!!! ^^

Miaks
0