Problème de caratère ? et <

zemele Messages postés 119 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 novembre 2009 - 4 avril 2008 à 09:04
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 7 avril 2008 à 18:11
Bonjour,

Je souhaite enregistrer le contenu d'une ifame (wysiwyg) via la class ajax de prototype. Seulement les '?' et les '<' et sûrement d'autre caractère ne passent pas.

Y a t il une soluce ?

4 réponses

maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
4 avril 2008 à 12:31
Bonjour,

Que tu veux tu dire par il ne passe pas? Un exemple de ton code peut auusi être utile (bien sur que la partie utile de ton code ;-) )

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
4 avril 2008 à 12:50
Bonjour,
Voir du coté de
encodeURIComponent()
problème traité sur le
CERTAIN-CARACTERE-NON-TRANSMIS-AVEC-POST


peut être le même problème...

;O)
0
zemele Messages postés 119 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 novembre 2009
5 avril 2008 à 00:11
Bonjour et mercie pour tes préçisions.

Mon problème était en 2 temps. Etait, car depuis j'ai fini par trouvé une solution , sûrement pas la meilleur, mais a le merite de fonctionner.

Donc :

Le pb se situait au niveau des "?", des "&" (évidemment dans l'url tout ce qui est derrière est considéré comme des varaibles) et d'autres caratères un peu plus rares. Du coup j'ai utiliser la solution :

url = escape(contenu);

Seulement cette fois ce sont les accents qui ne passaient plus alors j'ai ajouté avant la fonction suivante :

// Remplace toutes les occurences d'une chaine
function replaceAll(str, search, repl) {
    while (str.indexOf(search) != -1)
    str = str.replace(search, repl);
    return str;
}

// Remplace les caractères accentués (+ espace)
function htmlToAccent(str) {
    var spec = new Array("&eacute;", "&Eacute;", "&egrave;", "&Egrave;", "&ecirc;", "&Ecirc;", "&euml;", "&Euml;", "&agrave;", "&Agrave;", "&ugrave;", "&Ugrave;", "&ccedil;", "&Ccedil;", " &#128;", "&#167;");
    var norm = new Array("é", "É", "è", "È", "ê", "Ê", "ë", "Ë", "à", "À", "ù", "Ù", "ç", "Ç", "?", "§");
    for (var i = 0; i < spec.length; i++)
    str = replaceAll(str, norm[i], spec[i]);
    return str;
}

contenu = htmlToAccent(contenu);
puis j'encode l'url :
url = escapde(url);
Le tout est envoyé à la class ajax (bon je passe).

L'idéal serait de traiter tous les accents, mais pour les principaux et les caratères spéciaux ça passe très bien.

Comme je disais, il y a sûrement meiux à faire, par exemple avec ta solution (encodeURIComponent()).

Les commentaires sont les bienvenus surtout si je suis dans l'erreur...
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
7 avril 2008 à 18:11
Bonjour,
essaies simplement de voir le résulat
avec encodeURIComponent
alert( encodeURIComponent('àëêéè'))
;O)
0
Rejoignez-nous