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¬es=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 #.
3 Réponses :
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
Essayez ceci
let url = "counter=1&Id=4&type=2332&amount=3232&gstIncluded=3232&paymentMethod=2¬es=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
encodeURIComponent
est une meilleure façon de le faire. #
n'est peut-être pas le seul caractère à échapper.
@Barmar était totalement d'accord
#
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¬es=2332#fdsf&docId=0&ref=3232&isEdit=true"));
Vous pouvez également encoder l'URI complet de cette manière:
console.log(encodeURIComponent("#"));
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.