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 :

Saut de page et textarea


Sujet :

JavaScript

  1. #1
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut Saut de page et textarea
    Bonjour,

    Malgré la lecture de nombreux posts à ce sujet, je n'arrive pas à résoudre mon problème :

    a) L'affichage, dans un textarea, d'un texte avec saut de ligne (issu d'une base mysql via appel ajax) provoque une erreur "chaîne non terminée".


    b) Si je fais, avant l'affichage, str_replace("\r\n","\\r\\n",$machaîne), je n'ai plus d'erreur mais le saut de ligne est remplacé, dans mon textarea, par \r\n.


    J'ai du mal comprendre quelque chose...

    Quelqu'un a t'il une idée ?

    Bonsoir

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Tu peux passer ton code qui récupère la chaine de MySQL et la renvoie via AJAX ?

    ERE

  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 642
    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 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    dans un textarea le saut de ligne est %0A de mémoire, pas \r\n donc le replace devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    str_replace("\r\n","%0A",$machaîne)

  4. #4
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Merci pour vos réponses.

    Mais, si j'effectue
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    str_replace("\r\n","%0A",$machaîne)
    , alors j'ai "%0A" qui s'affiche dans le textarea et non un saut de ligne.

    Pour répondre à Emmanuel, voici mon code :


    a) Extraits de la page php appelée par ajax


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    header('Content-Type: text/html;charset=UTF-8');
    ...
    select sur une table contenant un champ text "comment"
    ...
    echo '<textarea style="width:100%;height:30pt;padding:0;margin:0" class="comments">'.str_replace("\r\n","\\r\\n",$rec['comment']).'</textarea>';


    b) Appel ajax

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    function appelajax(ajmod, navig, v1)
    {
    var xhr=null;
    if(window.XMLHttpRequest) {xhr=new XMLHttpRequest();}
    else if(window.ActiveXObject) {try {xhr = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try {xhr = new ActiveXObject("Microsoft.XMLHTTP");} catch (e1) {xhr = null;}}}
    else {alert("Votre navigateur n\'autorise pas les appels ajax");}
    if(xhr!=null)
    {
    xhr.open("POST", "script4.php", ajmod);
    if((navig="ff")||(ajmod==true))
    {
    xhr.onreadystatechange = function()
    {
    if(xhr.readyState == 4 && xhr.status == 200) {eval(xhr.responseText);}
    }
    }
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.send("v1="+v1);
    if((navig=="ff")&&(ajmod!=true)) {eval(xhr.responseText);}
    delete xhr;
    }
    }

  5. #5
    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 642
    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 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    essaye ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_replace("\r\n",chr(13)+chr(10),$machaîne)

  6. #6
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    je viens de tester, mais là, je repars sur une erreur "constante chaîne non terminée"

    Philippe

  7. #7
    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 642
    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 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    fais un urlEncode cote servaur avant de renvoyer la chaine
    puis un decodeuricomponent coté javascript

  8. #8
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Juste pour info il y a effectivement plusieurs posts sur le net qui remontent ce souci, mais jamais de réponse franche. De mon côté je viens de faire un test Ajax+Mysql+textarea et tout fonctionne correctement

    D'autre part, es tu sûr de ton code AJAX qui fait un eval alors que tu renvoies du code HTML ? Quel est le texte complet que te renvoie ton appel AJAX ?

    ERE

  9. #9
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Bonjour,

    Merci pour votre aide.

    * SpaceFrog : où places tu le decodeurlcomponent ?


    * Emmanuel : l'instruction evoyée à eval est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<textarea style="width:100%;height:30pt;padding:0;margin:0" class="comments">'.str_replace("\r\n","\\r\\n",$rec['comment']).'</textarea>';
    $rec['comment'] est issu d'un select sur une table contenant un champ text "comment"

    Philippe

  10. #10
    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 642
    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 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    le texte comment comporte-t-il des ' ou des " ?

    il à peut etre besoin d'un addslashes ?

  11. #11
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    a) Voici ce que je saisis dans le textarea :

    ligne 1 : Test avec quote ', symbole € et saut de page
    ligne 2 : suite


    b) Voici ce qui est enregistré dans ma base :

    ligne 1 : Test avec quote ', symbole € et saut de page
    ligne 2 : suite



    c) Voici ce qui est affiché dans mon textarea si je le "recharge" en ajax à partir de ma base après avoir appliqué str_replace("\r\n","\\r\\n"....) :

    ligne 1 : Test avec quote ', symbole € et saut de page\r\nligne 2 : suite


    Philippe

  12. #12
    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 642
    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 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    et si tu triple le \ ?

  13. #13
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Dans ce cas, j'obtiens une erreur "constante chaîne non terminée"

  14. #14
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Pgs Voir le message
    echo '<textarea style="width:100%;height:30pt;padding:0;margin:0" class="comments">'.str_replace("\r\n","\\r\\n",$rec['comment']).'</textarea>';
    Ça c'est l'instruction PHP qui génère la réponse.
    Peux-tu faire un copié/collé de la réponse elle-même (le résultat de cette instruction PHP) ?
    C'est elle que reçoit le nav ...

    A+

  15. #15
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Voici la réponse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <textarea style="width:100%;height:30pt;padding:0;margin:0" class="comments">ligne 1 : Test avec quote ', symbole € et saut de page\r\nligne 2 : suite</textarea>

  16. #16
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Ben moi, si je fais un eval() de ce code HTML, j'ai une erreur.

    Et je m'y attendais un peu, vu que le eval() sert à évaluer une instruction JavaScript.

    Ta méthode n'est simplement pas la bonne.

    A+

  17. #17
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    J'avais mal compris ta question : je t'ai indiqué le résultat affiché dans mon textarea.

    L'instruction envoyée par php à eval est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'document.getElementById(\'cible\').innerHTML="'.addslashes'<textarea style="width:100%;height:30pt;padding:0;margin:0" class="comments">'.str_replace("\r\n","\\r\\n",$tmprec['comment']).'</textarea>').'";';
    ("cible" est le <td> dans lequel j'affiche le textarea)

  18. #18
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Bon maintenant les choses sont claires (enfin, il me semble).
    Etant donné que tu as des \r\n dans ta chaine ton code renvoyé au client ressemble à celui-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    document.getElementById('cible').innerHTML="Hello
    world.
    ";
    avec des sauts de ligne dans ta chaine... d'où l'erreur sur l'eval et ta constatation d'une
    (...) erreur "constante chaîne non terminée"
    ERE

  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 642
    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 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    le \r\n n'est pas le retour ligne dans un textarea ...

  20. #20
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Bonjour,

    Merci pour vos interventions. Mais j'avoue ne pas trouver pour l'instant d'issue.

    Philippe

Discussions similaires

  1. Textarea avec marque de saut de page
    Par beral dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/11/2008, 20h38
  2. [Rave Report] les sauts de page
    Par Isa31 dans le forum Rave
    Réponses: 4
    Dernier message: 14/10/2004, 18h51
  3. [VBA] Saut de page...
    Par _Maniak dans le forum Général VBA
    Réponses: 5
    Dernier message: 24/09/2004, 15h26
  4. Réponses: 7
    Dernier message: 05/12/2003, 10h14
  5. [Delphi6] Saut de page
    Par Seb328Ci dans le forum QuickReport
    Réponses: 1
    Dernier message: 02/10/2003, 12h36

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