Символ #, кажется, вызывает проблемы с запросом get - PullRequest
2 голосов
/ 02 июня 2010

У меня есть queryString, который я передаю в метод doGet () сервлета, который выглядит следующим образом:

Количество = 9 & preId0 = -99 & objId0 = -99 & preId1 = -99 & objId1 = -99 & preId2 = 69 & objId2 = 16 #! 78 & preId3 = -99 & objId3 = -99 & preId4 = -99 & objId4 = -99 & preId5 = -99 & objId5 = -99 & preId6 = -99 & objId6 = -99 & preId7 = -99 & objId7 = -99 & preId8 = -99 & objId8 = -99

После и после # все равно null, поэтому я предполагаю, что # имеет какое-то особое значение. Это правда? и есть ли другие персонажи, которые будут это делать?

Ответы [ 4 ]

4 голосов
/ 02 июня 2010

Да, # обозначает хеш. Это используется, например, для перехода к тегам привязки на странице. Всякий раз, когда вы помещаете данные в URL, вам нужно кодировать их URL В JavaScript вы можете использовать encodeURIComponent(). На других языках вам потребуется поискать документацию.

2 голосов
/ 02 июня 2010

"#" - это специальный символ. Он ссылается на хеш, который обычно используется в якорях страниц. Вы можете просто закодировать этот символ% 23 в URL, и это устранит проблему. Другие значимые символы есть? [пробел] &

2 голосов
/ 02 июня 2010

Как правило, рекомендуется URLENCODE параметры строки запроса перед их отправкой на сервер. Знак # в URL-адресе используется для обозначения того, какой якорь вы используете в данный момент, и вызовет проблемы при попытке отправить его на сервер.

Более подробную информацию о кодировке URL можно найти здесь: http://www.w3schools.com/tags/ref_urlencode.asp

2 голосов
/ 02 июня 2010

# указывает опорную часть URL-адреса, которая используется для определения конкретной позиции в документе, возвращаемом остальной частью URL-адреса. Технически он известен как часть фрагмента URI.

Все, что следует за #, является частью этого. Поскольку он актуален только после того, как документ возвращен и обработан (опять же, он представляет позицию в этом документе), он интересен только клиенту. Он не имеет никакого значения или значения для сервера, и клиент будет рассматривать все значение как одно значение (если, конечно, вы не предоставите дополнительный пользовательский код для разделения значения и извлечения из него дополнительного значения).

Если вам нужно передать символ # как часть значения в URL, замените его на %23 - вы можете сделать это программно, используя URL Encoding , который заменит все «специальные» "символы с теми, которые приемлемы для транспорта через URI.

...