Символ Escape # в сериализованной строке - PullRequest
1 голос
/ 13 июня 2019

У меня есть сериализованная строка, которую я отправляю на сервер примерно так:

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

Проблема, с которой я здесь сталкиваюсь, заключается в том, что в примечаниях, добавленных пользователем, есть символ "#".Это приводит к разрыву строки запроса, и я не получаю данные после # в контроллере.Даже docId, ref и isEdit пропускаются.

Может кто-нибудь сказать, пожалуйста, лучшее решение для этого.

Я пробовал html экранировать поле примечаний, но оно не # #.

Ответы [ 3 ]

1 голос
/ 13 июня 2019

# - это символ, который вам нужно кодировать, когда он находится в URI (Uniform Resource Identifier), потому что он обычно используется, чтобы показать, какой идентификатор был выбран / направлен.

Вы можете увидеть # в конце URI в адресной строке, за которым может следовать идентификатор элемента на странице - например, документы Lodash (_.uniqBy* Например, 1007 *. Вы можете использовать встроенную функцию encodeURIComponent для ее кодирования. Закодировано, это выглядит как %23:

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

Вы также можете закодировать полный URI следующим образом:

console.log(encodeURIComponent("counter=1&Id=4&type=2332&amount=3232&gstIncluded=3232&paymentMethod=2&notes=2332#fdsf&docId=0&ref=3232&isEdit=true"));
1 голос
/ 13 июня 2019

Вы можете использовать encodeURIComponent для значения примечаний (и только для этого конкретного значения, иначе вы не сможете проанализировать другие параметры) - он будет избегать хэштега. Смотрите документы по MDN: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/encodeURIComponent

0 голосов
/ 13 июня 2019

Попробуйте это

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");

Затем отправьте его на сервер, примите значение ascii резервного символа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...