293 votes

Codage JavaScript des URL

Je suis en train de coder une chaîne qui sera passée dans une url (get). Mais, si j'utilise escape, encodeURI ou encodeURIComponent, & sera remplacé par %26amp%3B et je veux qu'il soit remplacé par juste %26 ... Qu'est-ce que je fais de travers ?

Dodo

437voto

Andy E Points 132925

Sans voir votre code, il est difficile de répondre autrement que par un coup de couteau dans le noir. Je suppose que la chaîne de caractères que vous transmettez à encodeURIComponent() qui est la méthode correcte à utiliser, provient du résultat de l'accès à la base de données de l'entreprise. innerHTML propriété. La solution consiste à obtenir le innerText / textContent à la place de la valeur de la propriété :

var str, 
    el = document.getElementById("myUrl");

if ("textContent" in el)
    str = encodeURIComponent(el.textContent);
else
    str = encodeURIComponent(el.innerText);

Si ce n'est pas le cas, vous pouvez utiliser la fonction remplacer() pour remplacer l'entité HTML :

encodeURIComponent(str.replace(/&/g, "&"));

94voto

Nick Craver Points 313913

Si vous avez fait littéralement ça :

encodeURIComponent('&')

Alors le résultat est %26 , vous pouvez le tester ici . Assurez-vous que la chaîne que vous encodez est juste & et non & pour commencer... sinon il est encodé correctement, ce qui est probablement le cas. Si vous avez besoin d'un résultat différent pour une raison quelconque, vous pouvez faire un .replace(/&/g,'&') avant l'encodage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X