IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Ajax : accents et pourcent [Prototype]


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par défaut 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 : 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?

  2. #2
    Membre expérimenté Avatar de Ikonic
    Inscrit en
    Février 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 197
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] AJAX et accent
    Par maxos75 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/01/2008, 23h37
  2. [AJAX]Tutoriel autocompletion > problème accents
    Par worldwide dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/07/2006, 13h48
  3. [AJAX] AJAX et accents
    Par goldorax113 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/04/2006, 17h01
  4. AJAX : Problème avec les accents...
    Par @drien dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/01/2006, 14h33
  5. [AJAX] Ajax et les accents
    Par nico-pyright(c) dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 09/12/2005, 20h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo