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 :

Echapper apostrophe dans string


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut Echapper apostrophe dans string
    Bonjour,

    Je cherche à échapper une apostrophe dans une string délimitée par des apostrophes. Cependant, lorsque je l'anti-backslashe, j'obtiens une erreur de caractère invalide.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="showDiv('Nom : Mr rouselet michel     Contact : Madame MR ROUSELET MICHEL NULL     Commentaire : 01 Mobistar secteur d'activité: MARBRERIE NOUVELLES CARRIERES ET MARBRERIE DE MAZY 1 OUI NON NON', 'donneesCible', 'divImg');"
    A mon avis, l'apostrophe de "d'activité " peut poser problème (cfr mon précédent post), mais lorsque je l'anti-backslahe, au moment de l'exécution du onclick, j'obtiens l'erreur "unterminated string literal" alors que le code généré donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="showDiv('Nom : Mr rouselet michel     Contact : Madame MR ROUSELET MICHEL NULL     Commentaire : 01 Mobistar secteur d\'activité: MARBRERIE NOUVELLES CARRIERES ET MARBRERIE DE MAZY 1 OUI NON NON', 'donneesCible', 'divImg');"
    Quelqu'un aurait une idée?

    Merci d'avance.

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut Inversez-moi
    Bonjour,

    Inversez tous les quotes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    onclick='showDiv("Nom : Mr rouselet michel     Contact : Madame MR ROUSELET MICHEL NULL     Commentaire : 01 Mobistar secteur d\'activité: MARBRERIE NOUVELLES CARRIERES ET MARBRERIE DE MAZY 1 OUI NON NON", "donneesCible", "divImg");'

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    inverser les quote resoudra bien le problème,
    mais ce problème vient de la fonction showDiv et tu ne nous la montre pas ...

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Je vais tenter d'inverser les quotes. En attendant, comme demandé, voici ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function showDiv(presentation, idDiv, divImage)
     {
      document.getElementById(idDiv).style.display = 'block';
      document.getElementById(divImage).innerHTML = "<img src='../images/moins.GIF' border='0' align='absmiddle' onclick=\"hideDiv('" + presentation + "', '" + idDiv + "', '" + divImage + "');\">&nbsp;&nbsp;" +  presentation + "</div>";
     }

  5. #5
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut \o/
    C'est bien ça.
    La variable presentation contient un " ' " et vous l'entourez également de " ' ":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    hideDiv('" + presentation

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Merci beaucoup à vous deux pour vos réponses, ça fait plaisir d'être soutenu car je rame sur ce problème depuis des jours.

    Je viens d'inverser les cotes, mais malheureusement j'ai toujours le même type de message alors que le code génére donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="showDiv(`Nom : Mr rouselet michel     Contact : Madame MR ROUSELET MICHEL NULL     Commentaire : 01 Mobistar secteur d\'activité: MARBRERIE NOUVELLES CARRIERES ET MARBRERIE DE MAZY 1 OUI NON NON`, 'donneesCible', 'divImg');"

  7. #7
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut Ouille
    Ca ce n'est pas un quote:

    Prenez bien ceci: " ' ".


    EDIT: Et en fait, ce sont les quotes du onclick de showDiv qu'il faudrait inverser.

    Euh... Vous n'avez pas inversez les quotes dans ce que vous venez de me dire. Mais peu importe. Ce qu'il faut c'est que le onclick dans showDiv donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    presentation = "l\'activité";
    hideDiv("... ' +  presenation + '... ");

  8. #8
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut Huhu
    Faut pas être fatigué car on devient vite fou. J'ai envie de dire ceci:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    onclick='showDiv("Nom : Mr rouselet michel     Contact : Madame MR ROUSELET MICHEL NULL     Commentaire : 01 Mobistar secteur d\'activité: MARBRERIE NOUVELLES CARRIERES ET MARBRERIE DE MAZY 1 OUI NON NON", "donneesCible", "divImg");'
     
     
     
    function showDiv(presentation, idDiv, divImage)
     {
      document.getElementById(idDiv).style.display = 'block';
      document.getElementById(divImage).innerHTML = "<img src='../images/moins.GIF' border='0' align='absmiddle' onclick='hideDiv(" + presentation + ", " + idDiv + ", " + divImage + ");'>&nbsp;&nbsp;" +  presentation + "</div>";
     }

    EDIT: J'ai recommencé trois fois. Je cherchais midi à quatorze heure.

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Je n'y arrive pas...

    Dans ma fonction, j'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function showDiv(presentation, idDiv, divImage)
     {
      document.getElementById(idDiv).style.display = 'block';
      document.getElementById(divImage).innerHTML = '<img src="../images/moins.GIF" border="0" align="absmiddle" onclick=\'hideDiv("' + presentation + '", "' + idDiv + '", "' + divImage + '");\'>&nbsp;&nbsp;' +  presentation + '</div>';
     }
    Dans mon interface, ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo "</div>
    <div id='divImg'>
      <img id='plusPresentationCibe' src='../images/plus.gif' border='0' align='absmiddle' onclick=\"showDiv(" .addslashes($presentationCible) . ", 'donneesCible', 'divImg');\">&nbsp;&nbsp;" .  $presentationCible . 
    "</div>...
    mais rien à faire...

  10. #10
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut :D
    Non mais je reremets ce que je pensais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function showDiv(presentation, idDiv, divImage)
     {
      document.getElementById(idDiv).style.display = 'block';
      document.getElementById(divImage).innerHTML = "<img src='../images/moins.GIF' border='0' align='absmiddle' onclick='hideDiv(\"" + presentation + "\", \"" + idDiv + "\", \"" + divImage + "\");'>&nbsp;&nbsp;" +  presentation + "</div>";
     }

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    passer par le DOM au lieu di innerHTML permettrait d'eviter ce niveau d'imbrications de quotes , sinon il faudra passer par &apos;

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Nos messages étaient postés quasiment en même temps...

    J'ai donc testé avec votre solution, mais j'obtiens toujours une erreur sur le onclick dans mon interface de base (sans la mise à jour de l'image).

    Ce message est maintenant
    "missing ) after argument list
    missing ) after argument listshowDiv(Nom : Venneman Betty Contact : Madame MME\"

    Dure, dure...

  13. #13
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut :-/
    Oui, et moi je vous laisse ici. Bonne Année à vous deux. Amusez-vous bien ce soir:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     echo "</div><div id='divImg'><img id='plusPresentationCibe' src='../images/plus.gif' border='0' align='absmiddle' onclick='showDiv(\"" . $presentationCible . "\", \"donneesCible\", \"divImg\");'>&nbsp;&nbsp;" .  $presentationCible . "</div>...

  14. #14
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Merci beaucoup et bon amusement également. Je continue à tester..

  15. #15
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Avec la solution de Vermine, j'obtiens l'erreur

    "missing ) after argument list
    [Break on this error] showDiv("Nom : Venneman Betty Contac...I NON NON", "donneesCible", "divImg");"

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    &apos; sera encore le plus simple sinon il faudrait externaliser certaines parties de focntions ou passer par des escape ou encodeURIComponent()

    ou faire une fonction javascript equivalente à htmlentities de php

  17. #17
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    J'avais loupé ton message et la proposition de passer par le DOM ou passer par &apos;. Je t'en remercie.

    Je vais tenter le &apos;, car je ne vois pas comment procéder avec le DOM pour mettre à jour dynamiquement mon div.

  18. #18
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Je viens donc d'essayer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick=\"showDiv('" . $presentationCible . "', 'donneesCible', 'divImg');\"
    et dans ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(divImage).innerHTML = "<img src=&apos;../images/moins.GIF&apos; border=&apos;0&apos; align=&apos;absmiddle&apos; onclick=&apos;hideDiv(" + presentation + ", " + idDiv + ", " + divImage + ");&apos;>&nbsp;&nbsp;" +  presentation + "</div>";
    J'obtiens l'erreur "missing ) after argument list
    [Break on this error] showDiv(Nom : Venneman Betty Contact : Madame MME"

  19. #19
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(divImage).innerHTML = "<img src=\"../images/moins.GIF\" border=\"0\" align=\"absmiddle\" onclick=\"hideDiv(' " + presentation + "',"' + idDiv + "', '" + divImage + "')\">&nbsp;&nbsp;" +  presentation + "</div>";
    mais je ne vois pas ce que vient faire la balise fermante de div là ...
    et le &apos; c'est poure remplacer uniquement le ' de l'activité

  20. #20
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Re,

    De fait, la balise fermante n'avait rien à faire là...

    Par contre, dans ma fonction j'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function showDiv(presentation, idDiv, divImage)
     {
      presentation.replace("'", "&apos;"); 
      document.getElementById(idDiv).style.display = 'block';
      document.getElementById(divImage).innerHTML = "<img src='../images/plus.gif' border='0' align='absmiddle' onclick=\"hideDiv('" + presentation + "', '" + idDiv + "', '" + divImage + "');\">&nbsp;&nbsp;" +  presentation;
     }
    Dans mon interface Php, j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img id='plusPresentationCibe' src='../images/plus.gif' border='0' align='absmiddle' onclick=\"showDiv('" . replaceRetoursLigne($presentationCible) . "', 'donneesCible', 'divImg');\"
    où replaceRetoursLigne() remplace des éventuels "\n" par rien.

    J'obtiens toujours un message d'erreur :

    "unterminated string literal
    [Break on this error] showDiv('Nom : Venneman Betty Contact : Madame MME"

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. echappement d'apostrophe dans eval
    Par italiasky dans le forum ASP.NET
    Réponses: 2
    Dernier message: 11/08/2010, 13h07
  2. CSHARP et l'Apostrophe dans un String
    Par RootsInternationnal dans le forum C#
    Réponses: 10
    Dernier message: 25/08/2009, 16h24
  3. Ignorer l'apostrophe dans un String
    Par guitariste dans le forum JDBC
    Réponses: 5
    Dernier message: 21/08/2008, 15h03
  4. Insérer une apostrophe dans une String
    Par plutonium719 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/08/2006, 11h02
  5. Problème de copie de string dans string
    Par kazarn dans le forum SL & STL
    Réponses: 17
    Dernier message: 15/03/2005, 18h35

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