Метод Ajax POST преобразует мое значение "+" в строке в "" почему? - PullRequest
5 голосов
/ 19 января 2010

Я не могу понять, почему в сообщении ajax знак "+" преобразуется в "". Пожалуйста, объясните?

Ответы [ 6 ]

4 голосов
/ 19 января 2010

Используйте функцию encodeURIComponent(), чтобы превратить ваши данные в действительные закодированные данные для запроса:

xhr.open("POST", url, true);
xhr.send(encodeURIComponent(postdata));
4 голосов
/ 19 января 2010

Так работает кодирование URL. Если вам нужен знак плюс, это% 2B, но вам действительно нужно просто экранировать или кодировать данные, которые вы отправляете на сервер. Введите "a + b c" в здесь .

3 голосов
/ 19 января 2010

"+" - это кодированный символ URL для пробела. Таким образом, когда ваши почтовые данные декодируются, «+» преобразуется в пробел.

2 голосов
/ 19 января 2010

Это потому, что Кодировка URL преобразует пробелы в +, так как пробелы недопустимы в URL.

Обычно символы преобразуются в %, за которым следуют две шестнадцатеричные цифры, но наличие + вместо %20 делает URL-адреса более удобочитаемыми.

Если вы закодируете + как %2B, это должно сработать.

2 голосов
/ 19 января 2010

Скорее всего, вы используете знак + в URL-адресе, где он по праву преобразуется в пробел, поскольку + - это кодированное в URLE представление пробела.

Запустите escape() для любого значения, которое вы вводите в свой URL, чтобы перевести его в закодированную форму URL.

1 голос
/ 19 января 2010

Это просто стандартное кодирование URL.Знаки плюса преобразуются в пробелы на сервере.Если вы хотите пройти со знаком плюс, вам нужно экранировать его как% 2b.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...