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 :

[AJAX] AJAX et les accents


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Par défaut [AJAX] AJAX et les accents
    Bonjour.

    Voici en gros mon probleme:

    J'ai un textarea, dans lequel j'écrit de facon normal (donc avec des \n é à...), un bouton apercu qui affiche a droite dans un div ce que j'ai mis dans le textarea, (la pas de souci ca fonctionne bien). Et enfin un bouton sauver qui active une fonction AJAX et envoi le contenue du textarea.

    Le gros probleme étant que les caractéres accentué ne passe pas bien:
    "salut é à" , arrive "salut é Ã".

    Bon aprés ca je le met dans une base de donnée mais bon je pense pas que ca soit le probleme.

    Voici les codes:
    JS:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    function apercu(){
    	var str=document.getElementById("texte").value;
    	document.getElementById("apercu").innerHTML = str.replace(/\n/g, "<br />");}
     
     
    function sauver(table){
    	 var xhr=null;
    	 var data="";
    	 var docXML
    	 data = "texte="+document.getElementById("texte").value+"&table="+table;	
     
        if (window.XMLHttpRequest) { 
            xhr = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) 
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
    	xhr.open("POST", "./php/sauver.php", true);
        //on définit l'appel de la fonction au retour serveur
        xhr.onreadystatechange = function() { 
    	if (xhr.readyState == 4){
    	}}
    	xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=iso-8859-1');
        xhr.send(data);
    }
     
    function init(table){
    	 var xhr=null;
    	 var data="";
    	 var docXML
    	 data = "table="+table;	
     
        if (window.XMLHttpRequest) { 
            xhr = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) 
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
    	xhr.open("POST", "./php/initialise.php", true);
        //on définit l'appel de la fonction au retour serveur
        xhr.onreadystatechange = function() { 
    	if (xhr.readyState == 4){
    		docXML= xhr.responseText;
    		document.getElementById("texte").value = docXML;
    	}}
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        xhr.send(data);
    }
    PHP sauver.php:

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     
    <?php 
    header('Content-Type: text/html; charset=ISO-8859-15');
     
    require "./../../secure/config.php";
    function convert($str){
    $str=ereg_replace( "é", "&eacute;", $str);
    return $str;
    }
     
    function modifier($str, $table){
    require "./../../secure/config.php";
     
    $dblink=mysql_connect($dbhost,$dbuser,$dbpass);
    mysql_select_db($db,$dblink);
     
     
    $query = "SELECT texte FROM ".$table."";
    $strback = mysql_query($query,$dblink) or die (mysql_error($dblink));
    $row = mysql_fetch_array($strback, MYSQL_NUM);
     
    $row[0]=addslashes($row[0]);
    $str=convert(addslashes($str));
    mysql_db_query($db, "UPDATE ".$table." SET texte='$str', texteback='$row[0]'");
    echo 'sauvegarder!!';
    echo $str;
     
    }
     
    $str=nl2br ($_POST['texte']);
    $table=$_POST['table'];
    echo $str;
    modifier( $str, $table);
     
     
    ?>
    Comme vous pouvez le voir j'ai essayé de faire une convertion mais je pense que le probleme arrive avant, enfin entre les deux pages.

    Enfin le html:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15" />
    <title>Document sans nom</title>
    </head>
    <script type="text/javascript" src="./admin.js"  >
    </script>
     
    <body>
    <table style="width: 1240px; border: 1px; border-color:#000000; background-color: #666666;">
      <tr>
        <td colspan="4"></td>
      </tr>
      <tr>
        <td >&nbsp;</td>
     
      </tr>
      <tr>
        <td colspan="4" ><select id="table">
        <option value="accueil">accueil</OPTION> 
        <option value="entreprise">entreprise</OPTION> 
        <option value="partenaires">partenaires</OPTION> 
        <option value="eau">eau</OPTION> 
        <option value="delais">delais</OPTION> 
        </select></td>
      </tr>
      <tr>
     
        <td colspan="2" height="450px" > <TEXTAREA align="top" style=" vertical-align: top; top: 0px; height: 400px; width: 600px; background-color:#FFFFFF;" type="text" id="texte" name="texte" ></textarea><center><input type="button" value="initialiser" onclick="javascript:init(document.getElementById('table').value);" /><input type="button" value="apercue" onclick="javascript:apercu();" /><input type="button" value="sauver" onclick="javascript:sauver(document.getElementById('table').value);" /></center></td>
        <td colspan="2" ><div  style="height: 620px; width: 620px; background-color:#FFFFFF;" id="apercu" name="apercu"></div> </td>
      </tr>
    </table>
    </body>
    </html>
    J'ai aussi essayé de faire une convertion avant cela avec:
    JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function HTMLspecialhars(ch) {
       ch = ch.replace(/é/g, "&eacute;")
       ch = ch.replace(/è/g, "&egrave;")
       ch = ch.replace(/à/g, "&agrave;")
       ch = ch.replace(/ù/g, "&ugrave;")
       return ch
     
    }
    Mais au moment de l'envoi, le texte est coupé au 1er accent.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Tu devrais essayer un coup d'encodeURIComponent sur la chaine data, avant de l'envoyer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.send(encodeURIComponent(data));

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Par défaut
    en faisant ca , le contenue envoyé est :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    texte%3D%3Ch1%3Epartenaires%3C%2Fh1%3E%20%0A%20retour%20a%20la%20ligne%20%0A%20%3Ccenter%3E%20center
     
    %20%3C%2Fcenter%3EUn%20texte%20est%20une%20succession%20de%20caract%C3%A8res%20organis%C3%A9e%20selon
     
    %20un%20langage.%20Cette%20d%C3%A9finition%20d%C3%A9signe%20aussi%20bien%20une%20s%C3%A9miotique%20du
     
    %20langage%20(proprement%20acte%20s%C3%A9mique)%20qui%20en%20tant%20que%20tel%20transcende%20l'acte%20textuel
     
    .%20Il%20en%20r%C3%A9sulte%20que%20le%20texte%20est%20exprim%C3%A9%20par%20plusieurs%20phrases%20en%20diff
     
    %C3%A9rentes%20langues.%0A%0APour%20r%C3%A9pondre%20au%20crit%C3%A8re%20de%20l'univocit%C3%A9%20que%20garantit
     
    %20dans%20le%20domaine%20de%20la%20scientificit%C3%A9%20d'une%20science%20linguistique%20le%20sens%20
     
    %C3%A9tymologique%2C%20on%20s'int%C3%A9resse%20%C3%A0%20l'%C3%A9tymologie%20de%20tissu.%20Car%2C%20texte
     
    %2C%20n%C3%A9%20au%20XIIe%20si%C3%A8cle%2C%20vient%20du%20latin%20tessere%20%3D%20tisser%20(du%20part
     
    .%20pas.%20textus%20d'o%C3%B9%20est%20d%C3%A9riv%C3%A9%20tissu)%2C%20au%20sens%20figur%C3%A9%20d'un%20tissu
     
    %20qui%20comporte%20une%20cha%C3%AEne%20et%20une%20trame.%20La%20cha%C3%AEne%20%C3%A9tant%20le%20dispositif
     
    %20vertical%20sur%20lequel%20op%C3%A8re%20transversalement%20la%20trame%20et%20comportant%20des%20anneaux
     
    %20o%C3%B9%20celle-ci%20puisse%20s'ins%C3%A9rer.%0A%0ADans%20une%20tapisserie%2C%20on%20doit%20en%20outre
     
    %20consid%C3%A9rer%20une%20vari%C3%A9t%C3%A9%20de%20cha%C3%AEnes%20et%20de%20trames%20color%C3%A9es%2C
     
    %20entrelac%C3%A9es%20pour%20constituer%20des%20figurations%20appel%C3%A9es%20patterns.%0A%0AEn%20informatique
     
    %2C%20la%20notion%20de%20texte%20s'oppose%20%C3%A0%20la%20notion%20de%20donn%C3%A9es%20binaires.%26table
     
    %3Dpartenaires
    Le resultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <br />
     
    <b>Notice</b>:  Undefined index:  texte in <b>E:\logiciel\EasyPHP 2.0b1\www\accessolaire\admin\php\sauver
     
    .php</b> on line <b>29</b><br />
     
    <br />
     
    <b>Notice</b>:  Undefined index:  table in <b>E:\logiciel\EasyPHP 2.0b1\www\accessolaire\admin\php\sauver
     
    .php</b> on line <b>30</b><br />
     
    Erreur de syntaxe pr�s de '' � la ligne 1
    Donc du coup il reconnais pas les variable de la methode POST.

    Serai t'il pas possible d'envoyé en contenue texte et de séparé aprés la variable par php?

    Mais est ce que ca réglera le probleme des accents?

    D'ailleur je comprend pas trop pourquoi il accepte pas les accents.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Par défaut
    up mes amis

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Par défaut
    J'ai réussi a résoudre le probleme. Enfin seulement le déplacer.

    A la liaison entre les deux pages pas de probleme, maintement c'est avec la base de donnée, quand j'insert les accents ca me met d'autre caractére comme avant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/06/2009, 16h39
  2. [AJAX] les accents avec ajax
    Par kaking dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 25/01/2009, 11h13
  3. Ajax et les accents avec "before_filter :headers_iso"
    Par bab_dev dans le forum Ruby on Rails
    Réponses: 9
    Dernier message: 23/10/2007, 11h20
  4. AJAX : Problème avec les accents...
    Par @drien dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/01/2006, 14h33
  5. [AJAX] Ajax et les accents
    Par nico-pyright(c) dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 09/12/2005, 20h09

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