Как передать символ # как часть строки запроса GET в URL-адресе?

Я использую javascript (используя jquery), чтобы передать символ # в качестве параметра GET через вызов AJAX.

Проблема сейчас в том, что символ # разбивает мою строку запроса.

Любая помощь приветствуется. Спасибо!


person resopollution    schedule 21.01.2010    source источник


Ответы (4)


Вам нужно заменить его на %23 в строке. Однако вместо того, чтобы делать это напрямую, вы должны использовать функцию Javascript encodeURIComponent для кодирования символов в URL-адресе.

В качестве альтернативы, если вы используете jQuery.ajax, вы можете автоматически кодировать параметры, передавая их через параметр data.

person Justin Ethier    schedule 21.01.2010

Если вы передаете параметр данных в jQuery.ajax, jQuery выполняет кодирование за вас. Вы не должны пытаться создать URL самостоятельно.

$.ajax({ url : "http://myserver.com/mypage.aspx",
         data : {'key1' : 'value#', 'key2' : 'value&&'}
         ...
      });
person Chetan S    schedule 21.01.2010

Используйте encodeURIComponent().

person AlexV    schedule 21.01.2010
comment
encodeURIComponent() превосходит escape(), поскольку экранирование искажает символы UTF-8, которых нет в ISO-8859-1. - person AlexV; 21.01.2010

Вам нужно будет закодировать URL-адрес, используя escape, функцию encodeURIComponent и т. д., чтобы передать этот символ. Это превратит персонажей в их двойников. Например, # будет %23

person Sarfraz    schedule 21.01.2010