Window.location.search [Résolu]

tets88 24 Messages postés vendredi 19 mai 2006Date d'inscription 21 janvier 2011 Dernière intervention - 20 déc. 2010 à 13:59 - Dernière réponse : PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention
- 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
Afficher la suite 

8 réponses

Répondre au sujet
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 21 déc. 2010 à 15:16
+3
Utile
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)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PetoleTeam
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 20 déc. 2010 à 18:24
0
Utile
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)
Commenter la réponse de PetoleTeam
tets88 24 Messages postés vendredi 19 mai 2006Date d'inscription 21 janvier 2011 Dernière intervention - 21 déc. 2010 à 09:48
0
Utile
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 ?
Commenter la réponse de tets88
nickadele 1253 Messages postés mercredi 7 août 2002Date d'inscription 10 avril 2013 Dernière intervention - 21 déc. 2010 à 10:57
0
Utile
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
Commenter la réponse de nickadele
tets88 24 Messages postés vendredi 19 mai 2006Date d'inscription 21 janvier 2011 Dernière intervention - 21 déc. 2010 à 11:11
0
Utile
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 ?
Commenter la réponse de tets88
tets88 24 Messages postés vendredi 19 mai 2006Date d'inscription 21 janvier 2011 Dernière intervention - 21 déc. 2010 à 15:39
0
Utile
Extra bleu ciel ! Merci beaucoup ! J'ai appris quelque chose aujourd'hui. Peace !
Commenter la réponse de tets88
nickadele 1253 Messages postés mercredi 7 août 2002Date d'inscription 10 avril 2013 Dernière intervention - 22 déc. 2010 à 15:10
0
Utile
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
Commenter la réponse de nickadele
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 22 déc. 2010 à 22:45
0
Utile
Bonjour à toi aussi nickadele, et bise à ta belle :O°)
Bon retour parmi nous donc.

;O)
Commenter la réponse de PetoleTeam

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.