Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Prototype & Script.aculo.us
Prototype & Script.aculo.us Forum d'entraide sur les frameworks Prototype et Script.aculo.us
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/05/2007, 10h40   #1
Invité de passage
 
Inscription : juillet 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 7
Points : 1
Points : 1
Par défaut [Prototype] Ajax : accents et pourcent

Bonjour à tous.

Je bloque depuis quelques heures sur un problème assez conséquent :

J'utilise la version 1.5.0 de Prototype. J'ai donc popoté une petite fonction du genre :

Code :
1
2
3
4
5
 
function ajax_send(target, url, pars)
{
	var myAjax = new Ajax.Updater(target, url, {method: 'post', evalScripts : true , parameters: pars});
}
Qui me permet de mettre à jour un div ou un span en faisant un simple :

Code :
1
2
 
ajax_send('le_div_a_mettre_a_jour','la_page_php_faisant_le_traitement.php',"title="+escape(title)+"&desc="+escape(desc));
Après plusieurs tests il survient toujours le même problème :

Si par maleur 'title' ou 'desc' contient le caractère '%', prototype se crash.

Donc je me dis : "Ok j'vais voir si il n'y aurai pas une nouvelle version patchée".

Et la je passe en 1.5.1 : Miracle, le caractère '%' est bien reconnu! mais... MAIS.

Maintenant, il suffit qu'il y ai un caractère accentué... et recrash.
Pour les différentes versions, cella survient sur la même fonction :

Ligne 298 pour la version 1.5.1 :
Code :
1
2
3
 
malformed URI sequence
if (value != undefined) value = decodeURIComponent(value);
et ligne 237 pour la version 1.5.0 :
Code :
1
2
3
 
malformed URI sequence
var value = pair[1] ? decodeURIComponent(unescape(pair[1])) : undefined;
Ok, après quelques recherche il ne semble pas être possible de passer des caractères accentués dans une URI, d'où la possible erreur de la version 1.5.1.

Ma question est donc: y a t'il un moyen de rendre l'URI valide pour le % dans la version 1.5.0 et, est-ce un bug de la part de la version 1.5.1 de ne pas pouvoir transférer des accents?

Note : Cela fonctionne sur des énormes textes avec plein d'accent dans tous les sens dans la version 1.5.0, mais dès qu'il y a un '%'... crunch.

Please help!

Edit :

Boooon, alors j'ai trouvé comment corriger le bug. (Ou apparement, ca marche...)

Dans la version 1.5.1 remplacer :

Code :
if (value != undefined) value = decodeURIComponent(value);
par :

Code :
if (value != undefined) value = decodeURIComponent(unescape(value).replace(/%/g,'%25'));
En gros, on 'unescape' la valeur, ce qui fait que l'on a plus le problème des accents, mais qu'on récupère le problème du pourcent. Il suffit alors de remplacer tous les pourcents par leur code héxadécimal.

Voili voilou. Si jamais ça peut aider quelqun...

Re Edit :

Après avoir posté un bug report sur Rails trac (http://dev.rubyonrails.org/ticket/8378#preview) On m'a répondu en raccourci que cela pouvait être la faute à mon encodage, qui est certes en UTF-8. D'autres personnes que moi pourraient-t-elles confirmer ce qui m'arrive?
Lineath est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2007, 04h49   #2
Membre actif
 
Avatar de Ikonic
 
Inscription : février 2007
Messages : 197
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 197
Points : 162
Points : 162
Salut,

Pour ma part je suis aussi en UTF-8 et il faut savoir que tous caractères spéciaux ne font pas partis du langage UTF-8 : il faut donc les remplacer par leur correspondance html...
par ex : é devient é
En faisant ainsi je n'ai eu aucun problème...
Le seul que j'ai c'est pour l'apostrophe qui crée un bug dans la réponse d'une requête et donc je l'ai remplacé par un autre type d'apostrophe...
Pour ton cas du pourcentage c'est vrai que c'est pas facile : unique solution correspondance héxadécimale..
En tout cas bien vu et merci à toi
Ikonic est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h25.


 
 
 
 
Partenaires

Hébergement Web