2014-12-16 3 views
0

Im пытается URL кодировать адрес электронной почты в качестве параметра URL. Теперь, кажется, прямое использование jquery param доказывает, что меня больше путают, когда я иду.Двойное кодирование параметров URL

Вот что я пробую

var toEncode = { 
        'email': '[email protected]', 
        'name': 'something' 
       } 

var newUrl = "http://www.example.com?" + $.param(toEncode); 

window.location.href = newUrl; 

я видел, что NEWURL правильно закодированы, но когда-то передается в адресной строке символ @% 2540% вместо 40. Где-то вдоль линии%% 40 снова зашифровывается, и я не могу показаться, что это не так.

Надежда есть свет в конце этой кроличьей дыры.

EDIT - Более подробную информацию

URL-адрес является растянутой на новый адрес и адрес электронной почты помещается в текстовое поле и показывает, как что-то% 40something.com

------- -SOLUTION -------- После нагрузок twiddling я нашел причину проблемы, modperl переписывал URL-адрес на сервере, поскольку флаг для отключения перезаписи URL-адресов не был отключен. Это вызвало encodeing случиться дважды, и, таким образом, причина% 2540

+0

Если бы это было кодирующей процента знак, вы должны увидеть% 25% 40 вместо% 2540. 'newUrl' * * отсутствует протокол (http: //), но это не должно вызывать проблему, которую вы видите. Возможно, нам понадобится больше кода. –

+0

Когда я сначала вызываю функцию параметра jquery и записываю строку, она закодирована вправо, что @ кодируется как% 40. Где-то вдоль линии%% 40 получает кодировку до% 25, ​​поэтому его% 2540 – Ernie

+0

Я думаю, что проблема связана с URL-адресом, к которому вы перенаправляетесь; он, вероятно, не расшифровал его должным образом. –

ответ

1

www.something.com относительный путь, вы должны быть уверены в том, что она включает в себя протокол, как:

newUrl = 'http://www.something.com?' + ... 
+0

Даже с включенным протоколом он все еще делает то же самое – Ernie

Смежные вопросы