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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
malformed URI sequence
if (value != undefined) value = decodeURIComponent(value);
et ligne 237 pour la version 1.5.0 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
if (value != undefined) value = decodeURIComponent(value);
par :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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?