Problème de textarea avec XMLHTTPRequest !

cs_liv Messages postés 49 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 26 avril 2006 - 24 avril 2006 à 11:15
cs_liv Messages postés 49 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 26 avril 2006 - 26 avril 2006 à 09:24
Bonjour à tous !

J'urilise la techno XMLHTTPRequest pour l'affichage de mes formulaires.
Jusqu'à maintenant je n'avais pas de problème mais depuis que j'ai inséré des éléments TEXTAREA dans mon formulaire cela ne fonctionne plus.

Voilà le problème :
Dès que je met un retour chariot dans mon textarea cela ne marche plus.

Mon fonctionnement :
1. J'ai une page avec un formulaire d'enregistrement avec divers éléments (dont textarea). Ces éléments sont déjà renseignés par XMLHTTPRequest via des requêtes dans ma base de données.
2. Je modifie mes éléments...en faisant un retour chariot dans mon textarea par exemple.
3. J'enregistre mes valeurs dans une base de données en appellant un script php.
4. Je rappelle ma page avec mon formulaire renseigné -> j'ai une erreur javascript lié au retour chariot du textarea.

Est-ce que je dois appeler des fonctions php de traitement de caractères ?? J'en ai essayé pleins mais ça ne fonctionne pas !

Merci de votre aide.

. Liv

12 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 avril 2006 à 12:11
Hello,

tu as essayé avec nl2br() ?
0
cs_liv Messages postés 49 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 26 avril 2006
24 avril 2006 à 12:26
Je viens de l'essayer mais rien n'y fait.

En fait mon champ "commentaire" doit s'afficher dans mon textarea.
Si il contiend des \n, pour qu'il s'affiche dans mon textarea je fais la manip suivante:

$commentaire = str_replace("\n"," \\n", $commentaire);

Si je ne fais pas ça j'ai une erreur javascript...et ensuite je l'affiche dans mon formulaire via XMLHTTPRequest.

echo "window.document.forms['monform'].elements['dCommentaire'].value ='".$commentaire."';";

Ensuite, j'enregistre les valeurs dans ma base...sans traitement particulier et c'est après que ça déconne.
Je regarde dans ma base la valeurs enregistrée et pas de problème, il y a bien mon texte en bonne et due forme...mais lorsque j'essaie de le réafficher j'ai une erreur javascript.

Je suis obligé de reformater le texte dans ma base pour que cela re-fonctionne.

. Liv
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 avril 2006 à 13:07
quelle est l'erreur js...?
0
cs_liv Messages postés 49 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 26 avril 2006
24 avril 2006 à 14:10
L'erreur renvoyée n'est pas clair...il me met "unterminated string literal".
La chaîne de caractère n'est pas prise en compte dans sa totalité. La valeur renvoyée par la console javascript s'arrête là où j'ai inséré le retour chariot.

. Liv
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 avril 2006 à 14:33
si tu remplaces ton str_replace par un nl2br, tu as la même erreur...??
0
cs_liv Messages postés 49 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 26 avril 2006
24 avril 2006 à 14:40
Oui ! C'est ça le plus curieux !
Il me met la même erreur javascript avec la valeur de la variable coupée à hauteur du retour chariot.
Si je ne mets pas nl2br j'ai la même erreur mais sans le

. Liv
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 avril 2006 à 14:44
Fais voir le html de ton textarea...?
0
cs_liv Messages postés 49 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 26 avril 2006
24 avril 2006 à 14:44
Pour te préciser je fais les tests avec 2 bases de données...l'une en LATIN1 et l'autre en UNICODE...même résultat pour les 2. C'est bizarre tu ne trouves pas ?

. Liv
0
cs_liv Messages postés 49 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 26 avril 2006
24 avril 2006 à 14:48
echo '<tr>
<td class="entete_tableau">Commentaires :</td>
<td class="ligne_tableau_p" colspan="">
&nbsp;<textarea id="dCommentaire" name="dCommentaire" class="textebord" cols="60" rows="10" maxlength="100" onKeyPress="CaracMax(\'dCommentaire\', \'500\')"></textarea>
</td>
</tr>';

. Liv
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 avril 2006 à 15:02
Pourquoi je ne l'ai pas vu avant..

echo "window.document.forms['monform'].elements['dCommentaire'].value ='".$commentaire."';";

ici, je ne comprends pas ce que tu fais. La méthode xmlhttp object qui va remplir ton élément est en js, pas en phpo, alors pourquoi as-tu un echo?
Ensuite, un textarea n'a pas d'attribut "value". C'est un innerHTML.
0
cs_liv Messages postés 49 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 26 avril 2006
24 avril 2006 à 15:24
Oui mais c'est un fichier php.

Voilà la truc...
J'ai un tableau de liens correspondant à différentes données dans ma base. Lorsque je clique sur un lien de ce tableau, je dois pouvoir renseigner dynamiquement les données du formulaire affiché en dessous. Ce lien appelle la fonction ModifImage stockée dans un fichier .js

function ModifImage(id,type)
{
window.document.getElementById("image_detail").style.display = "block";


var xhr_object = null;


if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();


else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");


else
{ // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}


xhr_object.open("GET", "image_request.php?mode=modif&id="+id, true);
xhr_object.onreadystatechange =
function()
{
if(xhr_object.readyState == 4)
eval(xhr_object.responseText);
}


xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//var data = "family="+escape(l1.options[index].value)+"&form="+f.name+"&select=fournisseur";
var data = "bla";
xhr_object.send(data);
}

Cette fonction appelle le fichier php image_request.php, en lui transmettant des variables, qui est censée remplir dynamiquement mon formulaire sans recharger la page.
C'est dans ce fichier php qu'il y a echo "window.document.forms['monform'].elements['dCommentaire'].value ='".$commentaire."';";

J'ai essayé de remplasser .value par .innerHTML...ça ne change rien.

Tout cela marche très bien en fait. J'arrive à remplir tous mes champs, liste select, case à cocher, textarea etc...sauf cette histoire de retour chariot.

. Liv
0
cs_liv Messages postés 49 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 26 avril 2006
26 avril 2006 à 09:24
Bah voilà !
str_replace("\r\n","", $commentaire); C'était ça le problème ! Le \r devant.

. Liv
0
Rejoignez-nous