Почему jquery заменяет «+» на пробел («»)?

У меня проблема здесь. Когда я использую ajax для передачи параметра, содержащего & quot; + & quot; на мой контроллер это заменяется пробелом.

Пример, я передам значение =Tom+Jerry+Garfield используя ajax. Когда я использую System.out.println () в моем контроллере, он отображаетTom Jerry Garfield, Я пытался использовать другие специальные символы, которые, похоже, не имеют проблем.

Пожалуйста помоги. Заранее спасибо.

 Felix Kling12 июл. 2012 г., 10:01
Не JQuery заменяет символы, сервер ...
 NinjaBoy12 июл. 2012 г., 10:01
@FelixKling Ты имеешь в виду, что это делает кот? Какое решение для этого?
 bzlm12 июл. 2012 г., 10:04
возможный дубликатAJAX POST and Plus Sign ( + ) -- How to Encode?
 NinjaBoy12 июл. 2012 г., 10:31
Зачем голосовать за этот вопрос?
 bzlm12 июл. 2012 г., 10:00
Spaces in the query part of URLs are always encoded as plus signs, Так что ваш контроллер просто декодирует их. Похоже, вы неправильно строите свои URL-адреса, поскольку кажется, что вы хотите, чтобы знак плюс (который необходимо кодировать), а не пробел. Если вместо этого вы используете% 2B, он должен работать, но вы не должны делать это вручную, как сейчас.

Ответы на вопрос(3)

+ декодируется как пробел после декодирования URL. Если вы хотите пройти+, вам нужно закодировать его.

Решение Вопроса

В некоторыхGET а такжеPOST запросы (скорее всего, в URL или через форму), пробелы кодируются как & quot; + & quot; (плюс) символы перед их передачей на сервер. Вы можете увидеть это поведение, если вы делаете нормальныйGET запрос - вы увидите что-то вродеgoogle.com?q=test+example Если вы хотите передать символ плюс с помощью запроса GET / POST ajax, вам необходимо & quot; urlencode & quot; Это. Кодированное значение URL для+ является%2B.

Также обратите внимание:

Функцию javascript encodeURIComponent () можно использовать, как показано в:

AJAX POST и знак плюс (+) - как кодировать?

 12 июл. 2012 г., 10:10
Обратите внимание, что & quot; реальный & quot; кодировка для пробела на самом деле% 20, символ + (плюс) на самом деле является альтернативной (более старой) формойstackoverflow.com/a/1634293/1407034

Когда мы передаем значения в контроллер, между запросом находится связующее звено модели. Когда выполняется вызов ajax, URL и запрос кодируются. & Quot; & Quot; (Пробел) символ в декодированной форме URL кодируется как "+".
Связыватель модели, с другой стороны, декодирует запрос, извлекает параметры и передает его контроллеру и, следовательно, "+" преобразуется в & quot; & Quot; , Но здесь возникает вопрос: почему нужно пройти «+»? в качестве разделителя ??

 12 июл. 2012 г., 10:05
Я не думаю, что он был задуман как разделитель, а как фактический знак плюс («Том плюс Джерри плюс Гарфилд»).
 12 июл. 2012 г., 10:09
@bzlm - Может быть, так ... Возможно, в этом случае% 2B - это путь. Но я все еще задаюсь вопросом о случае использования!

Ваш ответ на вопрос