IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Concaténation url + variable


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Bidouilleur amateur
    Inscrit en
    Juin 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur amateur

    Informations forums :
    Inscription : Juin 2006
    Messages : 23
    Par défaut Concaténation url + variable
    Bonjour,

    Problème a priori tout simple, je veux concaténer mon paramètre avec une url pour ensuite appeler une autre page. Mais hélas j'ai en retour une erreur dont je ne trouve pas l'origine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function choix(e) {
    var ch = (e) ? e : event;
    var touche = String.fromCharCode(ch.charCode ? ch.charCode : ch.keyCode);
    var url='http://monsite.perso.free.fr/test.php?touche='+ touche;
    var httpRequest;
    httpRequest=new XMLHttpRequest();
    httpRequest.open('GET',url,true);
    }
    Lorsque je fais appel à cette fonction dans ma page index j'obtiens :
    NB: J'utilise une extension Firefox ("FireBug") pour debugger
    missing ; before statement
    http://monsite.perso.free.fr/appel.js (Line 7)

    var url='http://monsite.perso.free.fr/test.php?touche=' touche';\n
    Le signe de concaténation "+" a disparu !

    Quelqu'un a-t-il déjà eu une chose pareille ?

    Merci à vous
    Plug

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Certainement un souci d'encodage de la page...A creuser

  3. #3
    Membre averti
    Homme Profil pro
    Bidouilleur amateur
    Inscrit en
    Juin 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur amateur

    Informations forums :
    Inscription : Juin 2006
    Messages : 23
    Par défaut
    Bonjour Kerod,

    Pourrais-tu être un peu moins énigmatique (ou plus précis ) dans ta réponse ?

    De quelle page parles-tu ?

    Sous entendrais-tu que l'erreur puisse venir de la page d'appel et non du codage de la fonction choix ? Et donc que le debugger raconterait n'importe quoi ?

    Ou y a-t-il un message subliminal dans ton post ?

    Déjà impatient de découvrir l'énigme de Kerod...

    Plug

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Il y a aucune énigme ni message subliminal. C'est une réponse comme toutes les autres. Ce genre de fonction marche toujours et la seule raison pour qu'un + disparaisse serait un mauvais encodage lors de l'écriture du code. Tournes-toi vers l'encodage de ta page et s'il le faut modifies le.

    Je peux pas être plus explicite

    PS : Il y a pas 10000 façons de concaténer

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    missing ; before statement
    http://monsite.perso.free.fr/appel.js (Line 7)

    var url='http://monsite.perso.free.fr/test.php?touche=' touche';\n
    Il apparait que tu as une quote en trop dans ce code qui n'apparait pas dans celui que tu as posté
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre averti
    Homme Profil pro
    Bidouilleur amateur
    Inscrit en
    Juin 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur amateur

    Informations forums :
    Inscription : Juin 2006
    Messages : 23
    Par défaut
    OK Bovino tu as raison : Après vérification de ta pertinente remarque, le code copié n'est pas celui qui est sur mon site (problème de version de développement certainement, désolé )

    Néanmoins la deuxième partie de ta remarque m'intéresse :

    Il apparait que tu as une quote en trop dans ce code
    Je croyais naïvement que j'avais oublié un ";"

    Penses-tu qu'une quote en trop puisse générer ce libellé d'erreur pour un debbuger ?

    Je suis en vacances et n'ai pas sous la main toutes mes données. Mais je poste le code de mon site dès lundi, après avoir refait quelques tests.

    Merci en tout cas

    Plug

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Oui, une quote en trop fait démarrer une chaîne de caractère pour l'interpréteur JavaScript, pour lui, ce n'est pas une erreur... il continue donc de traiter le code jusqu'à la quote suivante et ferme la chaîne (sans trop se soucier de ce qu'elle contient), il s'arrêtera donc à la prochaine erreur, mais comme toi, tu as continué ton code entre temps, les erreurs de syntaxe vont être nombreuses.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Membre averti
    Homme Profil pro
    Bidouilleur amateur
    Inscrit en
    Juin 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur amateur

    Informations forums :
    Inscription : Juin 2006
    Messages : 23
    Par défaut
    Bon voila, j'ai mis à jour mon premier post avec le code qui est actuellement sur mon site.

    Or, il n'y a que 2 quotes dans tout le .js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var url='http://monsite.perso.free.fr/test.php?touche='+ touche;
    qui sont bien suivies de la concaténation.

    Donc je ne vois toujours pas comment suivre une piste d'erreur

    Question qui pourrait aider :
    Pourquoi le "+" de concaténation disparait dans le message du débugger ?
    missing ; before statement
    http://monsite.perso.free.fr/appel.js (Line 7)

    var url='http://monsite.perso.free.fr/test.php?touche=' touche';\n
    et qu'il me rajoute un \n qui n'est pas dans le code ?
    Même si c'est pas forcément génant ce pourrait être un indice si ce n'est pas un comportement classique.

    A l'écoute de toute suggestion...

    Plug

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    le caractère \n correspond à un retour chariot, il est donc bien dans ton code.
    En revanche, pour revenir sur la piste fournie par Kerod, avec quoi as-tu créé ton fichier js ?
    S'il s'agit d'un éditeur de texte, quel était l'encodage utilisé ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Par défaut
    Salut !

    Avec le code exposé je ne vois pas où est le problème. Pourrais-tu nous en donner un peu plus s.t.p. ? Quand on a des problèmes de chaînes mal fermées ça peut venir d'assez loin en arrière jusqu'à assez loin en avant. Dans ton cas, d'après le message du debugger, ça a l'air assez limité mais il nous manque certainement un information.

    Concernant l'encodage du fichier je pense qu'il suffirait d'aller à l'adresse du script dans le navigateur pour voir ce qui en résulte. Si on voit bien apparaître le code qu'il nous expose ça ne doit pas avoir des masses de rapport.


    P.S. : Oh, au fait, grâce à cette petite classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    URL.setParameter("http://monsite.perso.free.fr/test.php", "touche", touche);

  11. #11
    Membre averti
    Homme Profil pro
    Bidouilleur amateur
    Inscrit en
    Juin 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur amateur

    Informations forums :
    Inscription : Juin 2006
    Messages : 23
    Par défaut
    Citation Envoyé par Bovino Voir le message
    ..., pour revenir sur la piste fournie par Kerod, avec quoi as-tu créé ton fichier js ?
    Tout simplement avec notepad sous windows

    Test de l'encodage : comme indiqué par Oscar Hiboux
    Citation Envoyé par Oscar Hiboux Voir le message
    Concernant l'encodage du fichier je pense qu'il suffirait d'aller à l'adresse du script dans le navigateur pour voir ce qui en résulte.
    en appelant le appel.js dans le navigateur j'obtiens bien le code exact tel que recopié dans mon premier post.

    Merci de vos réponses à tous.
    Je reprends les tests dès que possible

    Plug

  12. #12
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Dans ce cas, il faudrait que l'on voit la page en exécution.
    Soit en ligne soit en zip avec tous les éléments nécessaires à son fonctionnement.

  13. #13
    Membre averti
    Homme Profil pro
    Bidouilleur amateur
    Inscrit en
    Juin 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur amateur

    Informations forums :
    Inscription : Juin 2006
    Messages : 23
    Par défaut Le voleur de "+"
    Bonjour,

    Après avoir bien pataugé, j'en ai eu marre et j'ai laissé tomber (mise en place d'une solution palliative)

    Puis, comme j'aime pas ne pas comprendre, j'ai recommencé les tests.

    Et là, je me suis rendu compte avec le debugger que les + (opérateurs de concaténations) disparaissaient lorsque j'incluais les sources js dans le header mais pas si je les recopiais intégralement

    Instruction fautive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <head>
      <title>Sélection</title>
      <meta http-equiv="content-type"
     content="text/html; charset=UTF-7">
      <script langage="Javascript" type="text/Javascript"
     src="appel.js">
      </script>
    </head>
    En remplaçant src="appel.js" par le code lui-même, ben çà marche !

    Je n'ai rien trouvé de similaire sur yahoo (pourquoi c'est toujours google ? c'est vrai quoi... )

    Alors, si quelqu'un a une idée de ce qui pourrait expliquer la suppression des "+", exprimez-vous sans retenue

    Au fait, j'oubliais : j'ai pas bien fait attention la première fois mais à Oscar Hiboux pour cette petite classe

    Plug

  14. #14
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Toujours un problème d'encodage je pense...

    Tu as du coder le JavaScript en UTF-8 ou même ISO et là tu demandes à la page d'utiliser du UTF-7

  15. #15
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Pour ma part, je continue à penser qu'il doit s'agir d'un problème de quotes qui doit faire inclure le + dans l'URL, ce qui correspond du coup à un espace
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 39
    Par défaut
    Bonjour,
    Et en précisant un charset différent avec l'import du .js, ça donne quoi?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <head>
      <title>Sélection</title>
      <meta http-equiv="content-type"
     content="text/html; charset=UTF-7">
      <script langage="Javascript" type="text/Javascript"
     src="appel.js" charset="iso-8859-1">
      </script>
    </head>
    Bon courage

  17. #17
    Membre averti
    Homme Profil pro
    Bidouilleur amateur
    Inscrit en
    Juin 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur amateur

    Informations forums :
    Inscription : Juin 2006
    Messages : 23
    Par défaut
    Bonjour à tous,

    Citation Envoyé par Kerod Voir le message
    Toujours un problème d'encodage je pense...

    Tu as du coder le JavaScript en UTF-8 ou même ISO et là tu demandes à la page d'utiliser du UTF-7
    Possible, mais dans ce cas pourquoi le copié / collé perdrait-il l'encodage de départ alors qu'il provient du même fichier texte initial importé par le src= ?

    Citation Envoyé par Bovino Voir le message
    Pour ma part, je continue à penser qu'il doit s'agir d'un problème de quotes qui doit faire inclure le + dans l'URL, ce qui correspond du coup à un espace
    Un peu la même réponse que pour la suggestion de Kerod. S'il s'agit d'un problème de quotes pourquoi disparaitrait-il en remplaçant src= par le code incriminé ?

    Citation Envoyé par Boa67 Voir le message
    Et en précisant un charset différent avec l'import du .js, ça donne quoi?
    Bonne suggestion qui permettrait peut-être de vérifier l'hypothèse de Kerod. Mais comme je suis en vacances et que dès demain je suis dans un coin perdu (pas de tél, pas d'Internet, même pas de réseau GSM ) ce sera pas pour tout de suite (mais je ne lâche pas l'affaire )

    En tout cas un grand merci pour votre participation.

    A très bientôt (avec le résultat des tests j'espère )
    Plug

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 39
    Par défaut
    Possible, mais dans ce cas pourquoi le copié / collé perdrait-il l'encodage de départ alors qu'il provient du même fichier texte initial importé par le src= ?
    Simplement parce que le navigateur essai de le lire avec le charset que tu lui as indiqué. Un exemple tout simple pour illustrer, si ton texte est en chinois, et que tu dis au navigateur de le lire en utilisant le français, il le lira mal et n'y comprendra rien. Pour les charset c'est pareil ; ça ne change pas qu'en le copiant/collant ça reste le chinois initial.

Discussions similaires

  1. Algo de création de chaine par concaténation de variables
    Par Zhebulon dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 13/04/2006, 14h37
  2. Réponses: 1
    Dernier message: 30/12/2005, 10h57
  3. Concaténation de variable ???
    Par dj-julio dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/12/2005, 14h10
  4. [SQL] Concaténation de variables
    Par dogi dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 01/11/2005, 20h49
  5. Concaténer deux variables ?
    Par glsn dans le forum ASP
    Réponses: 2
    Dernier message: 19/12/2003, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo