EXTRAIRE DES VARIABLES D'UN URL EN JAVASCRIPT

rudyboy Messages postés 12 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 12 juin 2003 - 5 juin 2003 à 11:09
cs_zez Messages postés 1 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 30 septembre 2010 - 30 sept. 2010 à 18:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/8702-extraire-des-variables-d-un-url-en-javascript

cs_zez Messages postés 1 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 30 septembre 2010
30 sept. 2010 à 18:12
Salut les balèzes du java !!!
Bon moi je suis une brèle dans ce domaine mais j'essaye de tripatouiller du code pour récupérer des variables d'une url et les réinjecter dans une anim flash, jusqu'à là tout vas bien ça marche !
Mon soucis est que quand aucune variable n'est présente dans l'url mon code envoie donc des paramètres vides au flash et du coup ça bug...
Donc j'imagine qu'il faut utiliser "if" mais je ne sait pas comment faire...

Voila le code:

// <![CDATA[
if (typeof(deconcept) !== 'undefined' && deconcept.SWFObjectUtil.getPlayerVersion().major >= 6)
{
var qs = window.location.search.substring(1);
var qs_parts = qs.split('&');
var qs_params = [];
var tmp;
for (var i=0;i<qs_parts.length;++i) {
tmp = qs_parts[i].split('=');
qs_params[tmp[0]] = tmp[1];

var so = new SWFObject("krpano.swf", "krpanoSWFObject", "100%", "100%", "9.0.28","#000000");
so.addVariable("xml","angers.xml");
so.addParam("wmode","opaque");
so.addVariable('view.hlookat', qs_params['x']);
so.addVariable('view.vlookat', qs_params['y']);
so.addVariable('view.fov', qs_params['z']);
if ( so.write("krpanoDIV") ) { var mousewheelfixes = new SWFkrpanoMouseWheel(so); }
}

}
else
{
document.getElementById("krpanoDIV").innerHTML = '<center>ERROR:

Adobe Flash Player 9 needed

...click here to download...

</center>
';
}

// ]]>

Donc en gros les variables

so.addVariable('view.hlookat', qs_params['x']);
so.addVariable('view.vlookat', qs_params['y']);
so.addVariable('view.fov', qs_params['z']);

ne doivent êtres pas envoyées si elles sont absente de l'url... une idée ?

Si je ne suis pas clair l'essai est là : http://www.360images.fr/360/angers_haute_def/angers.html?x=34.42198796204111&y=3.0000000000000036&z=59.727912431587185

En gros c'est pour pouvoir partager une position d'un panorama 360° sur facebook...

Merci du coup de main !!!
cruchacode Messages postés 11 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 22 février 2012
16 sept. 2010 à 23:03
Afin de rechercher les & et les ? dans la querystring, il faut la décoder ... c

new String(decodeURIComponent(location.href));

Le code initialement proposé par Bud peut être modifié comme suit :

function getVar (nomVariable)
{
var aUri = new String(decodeURIComponent(location.href));
var infos = "&" + aUri.substring(aUri.indexOf("?")+1,
aUri.length)+"&";
if (infos.indexOf("#")!=-1)
infos = "&" + infos.substring(0,infos.indexOf("#"))+"&";
var variable=0;
{
nomVariable = "&" + nomVariable + "=";
var lenVar = nomVariable.length;
var p = infos.indexOf(nomVariable);
if (p != -1)
{
variable = infos.substring(p+lenVar,
infos.length).substring(0,infos.substring(p+lenVar,infos.length).indexOf("&"));
}
}
return variable
}
cs_petifa Messages postés 215 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 10 mars 2014
8 sept. 2009 à 11:31
Slt tu pourrais faire une petite modification sur ton code, pour gagner en lisibilité et en traitement

Au lieu de mettre :
# nomVariable = nomVariable + "="
# var taille = nomVariable.length
# if (infos.indexOf(nomVariable)!=-1)
# variable = infos.substring(infos.indexOf(nomVariable)+taille,infos.length).substring(0,infos.substring(infos.indexOf(nomVariable)+taille,infos.length).indexOf("&"))

Mettre à la place :
# nomVariable = nomVariable + "=";
# if ((pos = infos.indexOf(nomVariable)) !=-1)
# {
# variable = infos.substring(pos + nomVariable.length, infos.length);
# variable = variable.substring(0, variable.indexOf("&"));
# }
Kikuts Messages postés 159 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 5 novembre 2010
6 juil. 2009 à 15:00
Puré ce post est ptetre mort, mais mince ! Belt m'a fait délirer : il n'y va pas de main morte xD
cs_RudiRatlos Messages postés 6 Date d'inscription vendredi 17 février 2006 Statut Membre Dernière intervention 10 décembre 2007
28 déc. 2007 à 13:51
...ca marche, c'est tout ce qui compte 10/10.
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
30 nov. 2007 à 14:26
C'est exactement ce que j'avais besoin 10/10.
cs_LeGrosWinnie Messages postés 47 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 18 mai 2007
18 mai 2007 à 18:11
Mon script ne fonctionne qu'avec du HTML et ce position entre des balise <script> </script> en bas de page ,juste avant par exemple, de façon à modifier ce qui est déjà afficher, toujours par exemple.
Dans mon exemple dans l'URL je cherche la valeur de "Lieu", qui a une insidence sur l'affichage final de ma page (j'affiche une série de photos en rapport avec le lieu trouvé et non pas la page d'accueil classique).
cs_BestOne Messages postés 2 Date d'inscription jeudi 19 août 2004 Statut Membre Dernière intervention 18 mai 2007
18 mai 2007 à 14:14
En faite je ne dispose que des pages statiques et l'utilsation de PHP est exclue. J'ai besoin des détails consairenant la récupération et l'affichage d'une seul variable et le reste je vais essayer de le faire. Dans ton script il n'y a aucune indication sur la fonction et les paramétres d'entrés ou de sorties, donc je ne voix pas comment implémenter ton script dans une page HTML :-(
cs_LeGrosWinnie Messages postés 47 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 18 mai 2007
18 mai 2007 à 10:50
BestOne

Le mieux serait en php où tu peux directement récupéter les variables "$_GET['NomDeLaVarURL']".
Sinon, en JavaScript il faut créer un tableau de cahîne de caractères, faire une boucle du style "Tant Qu'il y a '&' dans l'URL Faire", dans la boucle utiliser la fonction pour récupérer à chaque passage une nouvelle variable, etc. etc.. Compliqué quoi... :-p
cs_BestOne Messages postés 2 Date d'inscription jeudi 19 août 2004 Statut Membre Dernière intervention 18 mai 2007
17 mai 2007 à 11:22
Comment peut on utiliser ton script sur une page html pour afficher le résultat de la recherche sous format tableau. Exemple,
URL:http://perso.ifrance.fr/recuperationget.html?Nom=gghg&prenom=eee&Age=12&Tel=132343545&email=EZEZE@hyj&Valider=Valider
je veux récuperer les valeurs des variables Nom, penom, Age, Tel et email via la page recuperationget.html et l'afficher sous format tableau :
Nom gghg
prenom eee
Age 12
Tel 13234545
email EZEZE@hyj

Merci
cs_LeGrosWinnie Messages postés 47 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 18 mai 2007
13 mai 2007 à 17:41
Pour ceux qui cherchent comment fonctionne IndexOf :
window.location.search.indexOf('TOTO') va retourner 0 si TOTO apparaît par exemple ici :
www.google.fr/TOTO

Et substr renvoie la chaîne située entre position1 et position2 :
substr(position1, position2)
Il faut donc l'utiliser avec indexOf utilisé précédement pour avoir la position du début de la variable (position de '?' plus 1) et de la fin (position de '&' moins 1 si plusieurs variables)

Exemple pour avoir la position de la variable 'Lieu' (beaucoup plus simple que celui ci-dessus, mais ne fonctionne qu'avec UNE variable, à vous d'adapter...désolé :-p) :

var Lieu = new String(Lieu); //Création de la variable 'string' Lieu
Lieu = '?Lieu='; //Détection de la variable dans l'URL
Position = window.location.search.indexOf(Lieu); //Recherche de la position
if (Position != -1) //Si une position est trouvé on continue, sinon, rien ne se passe
}
Position = Lieu.length; //Nouvelle position pour le contenue de la variable 'Lieu'
Lieu = window.location.search.substr(Position); //On remplace 'Lieu' par le contenue de la variable
}
cs_LeGrosWinnie Messages postés 47 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 18 mai 2007
13 mai 2007 à 17:09
RUDYBOY
Tu pourrais mettre du commentaire dans ton code ? Histoire d'expliquer ce que tu fais et comment fonctionnent les fonctions que tu utilises.
Si tu pouvais aussi éviter le return à ralonge où on ne comprend rien...
Si quelqu'un lit ce code c'est qu'il ne sait pas faire, donc essaies d'être clair...

BELT
Bin, proposes-en un puisque tu as l'air si doué...
cs_Belt Messages postés 47 Date d'inscription jeudi 13 juin 2002 Statut Membre Dernière intervention 3 juillet 2006
25 sept. 2003 à 15:55
Franchement il est vraiment pourri ton code en plus
en Javascript les "if" ca s'écrit "if" pas "If" et les point virgules ca
éxiste aussi !!!!!
rudyboy Messages postés 12 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 12 juin 2003
5 juin 2003 à 11:09
ce code ne marche pas si 2 (ou +) variables ont une partie du nom en commun, ex : ?montoto=1&toto=2, si on cherche la variable toto -> getVar va renvoyer 1 au lieu de 2 car le test doit porter sur ?toto= ou &toto= ...
de plus les premières lignes st inutiles, il suffit de prendre location.search, qui ne renvoie que la portion qui nous intéresse (sans le # et sans l'adresse proprement dite.
Ma méthode :
function QueryString(param){
var strParam = new String(param);
var position = window.location.search.indexOf('&' + strParam + '=');
if (position==-1)
position = window.location.search.indexOf('?' + strParam + '=');
if (position==-1)
return '';
return (window.location.search.indexOf('&', position + strParam.length + 2)==-1) ? window.location.search.substr(position + strParam.length + 2) : window.location.search.substr(position + strParam.length + 2, window.location.search.indexOf('&', position + strParam.length + 2) - (position + strParam.length + 2));
}
Rejoignez-nous