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]Mise en forme TEXTAREA


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 90
    Par défaut [Ajax]Mise en forme TEXTAREA
    Bonjour @ tous !!

    Voilà je suis en train de développer en php une application qui fait appel à la "technologie" Ajax.

    J'ai un formulaire et dedans, il y a un champs de type textarea.
    Le contenu de ce champs est transmis via un div transformé en "bouton" (non non pas de type submit !). Dans la déclaration du bouton il y a un onclick='...' .
    C'est là que Ajax entre en jeu via une fonction javascript :
    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
     
    <script type='text/javascript'>
    	function html_requete(url_requete)
    	{	
    		var nb_aleatoire= Math.round(Math.random()*10000); 
    		eval ('var object'+nb_aleatoire+'=null;')
    		document.getElementById('chargement').style.display='';
    		if(window.XMLHttpRequest) // Firefox 
    			eval(\"object\"+nb_aleatoire+ \" = new XMLHttpRequest();\"); 
    		else if(window.ActiveXObject) // Internet Explorer 
    			{eval(\"object\"+nb_aleatoire+ \" = new ActiveXObject('Microsoft.XMLHTTP');\"); }
    		else { // XMLHttpRequest non supporté par le navigateur 
    			alert('Votre navigateur ne supporte pas les objets XMLHTTPRequest...');
    		}
    		eval(\"object\"+nb_aleatoire+\".open('GET' , url_requete, true);\");
    		eval(\"object\"+nb_aleatoire+\".send(null);\");
    		eval(\"object\"+nb_aleatoire+\".onreadystatechange=function(){if (object\"+nb_aleatoire+\".readyState==4){	eval(object\"+nb_aleatoire+\".responseText);document.getElementById('chargement').style.display='none';}}\");
    	}
    	</script>
    nb : s'il y a des échappement de caractères c'est normal, cette fonction javascript est implantée dans un script php. Je sais c'est mal ...

    voici le code du div en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div align=center style='cursor:pointer;' onclick='if(test_adresse()!=1) alert(test_adresse()); else  {html_requete(\"modules/$module_name/requete_validation.php?param=debut_fin&qui=$qui&date_inter=$date_inter&l_debut=\"+document.getElementById("l_depart").value+\"&l_fin=\"+document.getElementById("l_arrive").value+\"&h_debut=\"+document.getElementById("h_depart").value+\"&h_fin=\"+document.getElementById("h_arrive").value+\"&km_depart=\"+document.getElementById("km_depart").value+\"&km_arrive=\"+document.getElementById("km_arrive").value+\"&type_lieu_depart=\"+document.getElementById("type_lieu_depart").value+\"&type_lieu_arrive=\"+document.getElementById("type_lieu_arrive").value+\"&commentaire=\"+document.getElementById("commentaire").value+\"&deplacement=\"+document.getElementById("deplacement").checked);}'><img src='modules/$module_name/images/go.gif'><br /><b>Modifier</b></div>" .

    Le soucis c'est que lorsque je récupère le contenue du textarea dans mon script, la mise en page à sauté et les caractères spéciaux aussi. Exemple le "é" deviens "Ä©"


    Bon je sais que tout ce code n'est pas top du tout, mais je suis obligé de travailler avec sa ...
    Je ne peux pas le modifier et en faire quelque chose de jolie.
    Tout cela fait parti d'une application Web qui est en production ...

    Je me répète, le code est vraiment dégueux ...

    Merci d'avance aux courageux !!

  2. #2
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par baallrog
    Le soucis c'est que lorsque je récupère le contenue du textarea dans mon script, la mise en page à sauté et les caractères spéciaux aussi. Exemple le "é" deviens "Ä©"
    Ca, c'est de l'UTF-8, mal utilisé. A quel endroit tu recuperes ça, dans le JS? Ou dans le PHP?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 90
    Par défaut
    et bien le "é" est récupéré dans le script php qui traite ma requete Ajax.
    Ce script sauvegarde les valeurs du formulaire dans la base de données.

    Avant d'envoyé le contenu du textarea, le "é" est normal, une fois dans le script, il est changé !

    J'avais pensé ausi a un problème d'encodage, mais je ne sais pas du tout comment régler cela ...
    Le serveur est un debian stable, l'encodage est d'origine, je n'ai rien touché à ce niveau !

    Sinon j'ai aussi essayé de modifié mon javascript html_request pour envoyer par post plutôt que par get. Pas de changement !

    J'ai fait un encodeURI() sur mon textarea juste avant de l'envoyer et la mise en page est ok maintenant, sauf les caractères accentués ...

    Encore merci !

  4. #4
    Membre confirmé Avatar de kingmandrax
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 87
    Par défaut
    Je pense que ton prob vient de ton script php. Essaie de faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $text = utf8_decode($data)
    $data correspond au champ de ta requête AJAX et qui contient les donnée du textarea.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 90
    Par défaut
    Merci pour le utf8_decode() mais cela n'a pas fonctionné!

    par contre j'ai pu mettre le doigt sur un problème, dans ma base de données au lieu d'un "é" ou d'un "Ä©" j'ai sa : "&Atilde;&copy;"

    j'avoue que là j'ai du mal à suivre ... pourquoi autant de jeux de codages ...

  6. #6
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par baallrog
    Merci pour le utf8_decode() mais cela n'a pas fonctionné!

    par contre j'ai pu mettre le doigt sur un problème, dans ma base de données au lieu d'un "é" ou d'un "Ä©" j'ai sa : "&Atilde;&copy;"

    j'avoue que là j'ai du mal à suivre ... pourquoi autant de jeux de codages ...

    Il n'y en a que deux, UTF-8 (communication PHP / Javascript) et ISO-8859-* ou CP1252, en PHP (et communication PHP / MySQL).

    Donc, il faut faire en PHP utf8_decode, quand tu recois des données de javascript et utf8_encode quand tu envoies des données au javascript.

    En javascript, il est préférable de faire un encodeURIComponent avant d'envoyer des données à PHP.

    Avec ça, tu devrais t'en sortir.

    Par contre, je ne vois pas trop dans ton code ou est la communication PHP / Javascript...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 90
    Par défaut
    Honte à moi ...
    j'avais oublié un HTMLEntities($data); justa avant ma requete SQL dans mon script de traitemen de ma requete Ajax ...

    Forcement, je peux faire tous les tests du monde sa ne fonctionnera pas comme je veux ...

    Enfin bref voici mon code à présent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div align=center style='cursor:pointer;' onclick='if(test_adresse()!=1) alert(test_adresse()); else  {html_requete(\"modules/$module_name/requete_validation.php?param=debut_fin&qui=$qui&date_inter=$date_inter&l_debut=\"+document.getElementById("l_depart").value+\"&l_fin=\"+document.getElementById("l_arrive").value+\"&h_debut=\"+document.getElementById("h_depart").value+\"&h_fin=\"+document.getElementById("h_arrive").value+\"&km_depart=\"+document.getElementById("km_depart").value+\"&km_arrive=\"+document.getElementById("km_arrive").value+\"&type_lieu_depart=\"+document.getElementById("type_lieu_depart").value+\"&type_lieu_arrive=\"+document.getElementById("type_lieu_arrive").value+\"&commentaire=\"+encodeURIComponent(document.getElementById("commentaire").value)+\"&deplacement=\"+document.getElementById("deplacement").checked);}'><img src='modules/$module_name/images/go.gif'><br /><b>Modifier</b></div>" .
    Et du coté de mon script php qui réponds à la requetes ajax, j'ai fait un utf8_decode($data);

    et maintenant tout roule !!

    Un grand merci à denisC et kingmandrax

    ps : le javascript concernant Ajax vous en pensez quoi ? (fonction html_requete)

  8. #8
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par baallrog
    ps : le javascript concernant Ajax vous en pensez quoi ? (fonction html_requete)
    On peut parler franchement?

    C'est quoi cette histoire de nombre aléatoire? Javascript a des espaces de noms, quand même? Et je ne vois pas trop ou tu passes le contenu de ton champ à ton serveur, mais je prefere même pas imaginer que tu le fasses directement en GET dans ta requete...

Discussions similaires

  1. Mise en forme textarea
    Par shelko dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 16/03/2010, 10h21
  2. boutons de mise en forme textarea
    Par visqueu dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/07/2007, 22h45
  3. Comment garder la mise en forme d'un textarea ?
    Par dns78 dans le forum Langage
    Réponses: 4
    Dernier message: 09/06/2007, 14h53
  4. changer la mise en forme d'une partie d'un textarea
    Par gedeon555 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/08/2006, 11h48
  5. [TextArea] Gestion de la mise en forme
    Par romuluslepunk dans le forum Composants
    Réponses: 12
    Dernier message: 04/08/2005, 20h19

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