Window.location.search

Résolu
tets88 Messages postés 24 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 21 janvier 2011 - 20 déc. 2010 à 13:59
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 22 déc. 2010 à 22:45
Bonjour,

J'ai un problème qui me dépasse au niveau compréhension. Je vous explique en quelques mots le principe. J'ai un javascript qui rajoute un paramètre dans l'URL. Grâce à ça, je peux l'utiliser dans ma page.php.

Voilà mon code qui ajouter le nouveau paramètre :
URL avant : www.monsite.com/page.php?id=0

$('#id a').click(function(){
   var para=1
   url='?id=0&newPara='+para;
   window.location.search=url;
})


URL voulu : www.monsite.com/page.php?id=0&newPara=1

Ce qui est aberrant, si je l'exécute comme ça, il ne me change pas l'adresse url. Mais si j'ajoute une alert() à la fin, l'url change... Moi pas comprendre... Merci

8 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
21 déc. 2010 à 15:16
Bonjour,
Dans la pratique si une action est faite sur un événement d'un lien, à l'issue de cette action, l'action par défaut prévue, chargement de HREF dans le cas d'un lien, est effectué sauf si l'action est annulé par un retour false.
[page.html lien]
affichera la page page.html après affichage de l'alert
[page.html lien]
affichera l'alert puis revient au document.

Dans la mesure ou l'on change la location.search, le navigateur charge la nouvelle page indiquée.

Cas sans return false :
Après exécution des instructions misent sur l'événement, retour pour exécution de l'action par défaut.
Si tu mets un alert(''), suivant le navigateur, la page sera chargée ou en attente, apparemment
- FireFox -> Charge
- IExplorer -> mets en attente

Si la page est chargée l'action par défaut ne peut pas se réaliser le document initial n'existant plus, on retourne where, on fait quoi?.

Dans le cas contraire on retourne à l'action par défaut pour l'exécuter.

Cas avec return false :
l'action par défaut ne sera en aucun cas pris en compte.

Il te faut donc un return false dans ta fonction événementielle.

ci joint un petit fichier pour test
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>avec ou sans return</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
//-- affichage pour visualisation
if( window.location.search){
  document.write( "" +window.location.search +"
");
}
</script>
<script type="text/javascript" src = "jquery-1.4.2.min.js"></script>
</head>



  [page.html Envoi]



pas de return false

avec return false
<script type="text/javascript">
$('#id a').click(function(){
   var para =10;
   var url = "?id=1&newPara=" +para;
   window.location.search = url;
   alert( 'Affichage\n' +url);   
   return( false); //-- ICI mets en commentaire ou non
})
</script>

</html>
à vos tests prêt partez...

;O)
3
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
20 déc. 2010 à 18:24
Bonjour,
Ce qui est aberrant, si je l'exécute comme ça, il ne me change pas l'adresse url
peut être que la page se recharge si tu as quelque chose comme cela
[# Test]
il faut mettre un return( false) en retour de fonction pour que le HREF soit ignoré
;O)
0
tets88 Messages postés 24 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 21 janvier 2011
21 déc. 2010 à 09:48
Non alors le problème ne vient pas d'un rechargement de page.

La page où j'ai le lien est www.monsite.com/mapage.php?id=0 et la page que je veux charger est www.monsite.com/mapage.php?id=1&newPara=1. La valeur du paramètre "id" change (ce qui signifie que une autre page se charge) mais le "newpara" ne s'ajoute pas. Sauf si je fais un alert en fin de fonction. Bizarre non ?
0
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
21 déc. 2010 à 10:57
Bonjour,

[i]la page que je veux charger est www.monsite.com/mapage.php?id= 1&newPara=1
url='?id=0&newPara='+para;/i

En plaçant url='?id=0&newPara='+para; tu devrais avoir www.monsite.com/mapage.php?id= 0 &newPara =1 et non www.monsite.com/mapage.php?id= 1 &newPara =1

Nickadele
non, ma belle ne s'appel pas Adèle
Mon Blog
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tets88 Messages postés 24 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 21 janvier 2011
21 déc. 2010 à 11:11
Of course Nickadele,

Même en corrigeant cette erreur, le problème persiste. Ce qui ne va pas, c'est l'ajoute d'un paramètre dans l'url en passant par le JS. Peut-être il existe un méthode plus adéquate ?
0
tets88 Messages postés 24 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 21 janvier 2011
21 déc. 2010 à 15:39
Extra bleu ciel ! Merci beaucoup ! J'ai appris quelque chose aujourd'hui. Peace !
0
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
22 déc. 2010 à 15:10
PetoleTeam,

c'est bien d'avoir ré-expliqué plus en détail ce que tu avais déjà mis dans ton premier message. Apparement tu t'es mieux fait comprendre, comme quoi parfois les long discours...

PS : j'en profite pour te saluer, ça faisait longtemps que j'étais plus passer par ici !

Nickadele
non, ma belle ne s'appel pas Adèle
Mon Blog
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
22 déc. 2010 à 22:45
Bonjour à toi aussi nickadele, et bise à ta belle :O°)
Bon retour parmi nous donc.

;O)
0
Rejoignez-nous