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 :
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
3
4
5 function ajax_send(target, url, pars) { var myAjax = new Ajax.Updater(target, url, {method: 'post', evalScripts : true , parameters: pars}); }
Après plusieurs tests il survient toujours le même problème :
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));
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 :
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 if (value != undefined) value = decodeURIComponent(value);
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.
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;
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 :
par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (value != undefined) value = decodeURIComponent(value);
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (value != undefined) value = decodeURIComponent(unescape(value).replace(/%/g,'%25'));
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?![]()
Partager