1
votes

Symbole d'échappement # dans une chaîne sérialisée

J'ai une chaîne sérialisée que j'envoie au serveur quelque chose comme ci-dessous:

counter=1&Id=4&type=2332&amount=3232&gstIncluded=3232&paymentMethod=2&notes=2332#fdsf&docId=0&ref=3232&isEdit=true

Le problème auquel je suis confronté ici est qu'il y a le symbole "#" dans les notes ajoutées par l'utilisateur. Cela entraîne la rupture de la chaîne de requête et je ne reçois pas de données après # dans le contrôleur. Même docId, ref et isEdit sont ignorés.

Quelqu'un peut-il s'il vous plaît dire la meilleure solution pour cela?

J'ai essayé html d'échapper au champ de notes mais il n'échappe pas #.


0 commentaires

3 Réponses :


1
votes

Vous pouvez utiliser encodeURIComponent sur la valeur des notes (et uniquement sur cette valeur spécifique, sinon vous ne pourrez pas analyser d'autres paramètres) - cela échappera au hashtag. Voir la documentation sur MDN: https://developer.mozilla.org / fr / docs / Web / JavaScript / Reference / Objets_globaux / encodeURIComponent


0 commentaires

0
votes

Essayez ceci

let url = "counter=1&Id=4&type=2332&amount=3232&gstIncluded=3232&paymentMethod=2&notes=2332#fdsf&docId=0&ref=3232&isEdit=true";
url.replace("#","%23");

Ensuite, envoyez-le au serveur prendra la valeur ascii du caractère de réserve


2 commentaires

encodeURIComponent est une meilleure façon de le faire. # n'est peut-être pas le seul caractère à échapper.


@Barmar était totalement d'accord



1
votes

# est un caractère que vous devez encoder lorsqu'il est dans un URI (Uniform Resource Identifier), car il est normalement utilisé pour montrer l'ID sélectionné / vers lequel il est dirigé.

Vous pouvez voir un # à la fin de l'URI dans la barre d'adresse, et il peut être suivi de l'ID d'un élément sur la page - un exemple est la documentation Lodash ( _.uniqBy par exemple. Vous pouvez utiliser le encodeURIComponent pour l'encoder. Encodé, il ressemble à %23:

console.log(encodeURIComponent("counter=1&Id=4&type=2332&amount=3232&gstIncluded=3232&paymentMethod=2&notes=2332#fdsf&docId=0&ref=3232&isEdit=true"));

Vous pouvez également encoder l'URI complet de cette manière:

console.log(encodeURIComponent("#"));


1 commentaires

Vous ne devez pas appeler encodeURIComponent sur l'URL complète. Il encodera les caractères = et & , afin qu'ils n'effectuent pas leur action de délimitation normale. Vous devez encoder chaque nom et chaque valeur séparément.