#javascript #jquery-plugins
#javascript #jquery-плагины
Вопрос:
Я передаю значения в строке запроса URL, которые интерпретируются JavaScript и используются для заполнения элементов формы. Пользователь нажимает на ссылку на одной странице, переходит на другую страницу, которая затем расшифровывает значения из URL-адреса и заполняет поля формы.
Для декодирования URL-адреса я использую плагин jQuery URL Decoder.
Этот параметр передается в window.open()
:
http://mydomain.com/whatever?EmailAddress=me@privacy.comamp;YourName=joe schmoamp;CompanyName=TEXAS A & M - LUBBOCK, TX
Когда я подключаю этот URL-адрес к онлайн-версии декодера, он правильно анализируется — параметры строки запроса находятся в объекте .params, правильно декодируются.
Однако после нажатия на ссылку, когда я просматриваю window.location.href, я получаю это:
http://mydomain.com/whatever?EmailAddress=me@privacy.comamp;YourName=joe schmoamp;CompanyName=TEXAS M amp; M - LUBBOCK, TX
Который выходит из декодера URL в виде гигантского беспорядка (т. Е. неправильно декодированный IMO, потому что входные данные неправильно закодированы).
Как мне (безопасно) вернуться к строке, которая правильно интерпретируется декодером URL?
Комментарии:
1. Вы пробовали использовать вместо этого встроенный
encodeURIComponent
иdecodeURIComponent
?
Ответ №1:
используйте функцию javascript, подобную этой:
function urlencode(str) {
return escape(str)
.replace(' ', ' ') // or replace with ' '
.replace('@', '@');
}
(Я знаю, что вам не нужна первая замена, но это более полная… вы можете добавлять дополнительные замены по мере необходимости или искать полный urlencode)
Комментарии:
1. По-настоящему сложная часть связана с (трудноразличимым) некодированным амперсандом в параметре CompanyName.