jQuery вырезает знак "+". Как пофиксить?

1. Дмитрий (28.09.2011 / 16:18)
Такая штука. Заметил, что при передаче POST запроса jQuery вырезает знак "+". При обычном POST все отправляется нормально. В чем может быть причина?

Данные POST я отправляю примерно таким макаром (начало обработки):
var flop = $('#flop').val();
var name = $('#name').val();

$.ajax({
    type: 'POST',
    url: 'адрес обработчика',
    cache: false,
    data: 'flop=' + flop + '&name=' + name,
    dataType: 'html',  
    success: function(repsone)
	{
Обычно юзаю jquery-1.4.2.min, сегодня попробовал версию 1.6.3 - ничего не изменилось.
Как пофиксить? Мне в некоторых местах кода надо передавать знак "+" постом.

2. AHgpyxA (28.09.2011 / 16:22)
один из вариантов - заменять плюс при подаче запроса на что-нибудь типа "_plus_", а при получении запроса менять обратно.

3. Ванёк (28.09.2011 / 16:34)
http://ru.w3support.net/index.php?db=so&id=1683198

Добавлено через 05:10 сек.
AHgpyxA (28 Сентября 2011 / 16:22)
один из вариантов - заменять плюс при подаче запроса на что-нибудь типа "_plus_", а при получении запроса менять обратно.
Если я правильно понял тут + объединяет между собой имена переменных и их значения,а сам + не передается в запросе.

4. Дмитрий (28.09.2011 / 17:13)
2. AHgpyxA, по твоему совету склепал ф-ю обработки знака +
function check_plus(text) 
{
    text = text.replace(new RegExp('\\+','g'),"_plus_");
    return text;
};
Ею можно обрабатывать как выборочно переменные перед передачей, так и полностью data.

Гемор заключается в том, что теперь надо каждую обработанную таким макаром переменную в обработчике заменять обратно
$text = preg_replace('|_plus_|iu','+', $text); 
Спасибо, вопрос решил, но это все-таки костыль. Хотельсь бы решить вопрос более глобально.

3. Vanich, в той ссылке советуют то же самое, что во 2 посте - т.е. маскировку знака "+".

5. ramzes (28.09.2011 / 22:26)
4. dima.london, зачем регулярками? Str_replace

6. Дмитрий (28.09.2011 / 22:29)
6. ramzes, что ты имеешь ввиду?

7. ramzes (28.09.2011 / 22:32)
$text = str_replace('_plus_', '+', $text);
вот этоsmile

8. Дмитрий (28.09.2011 / 22:36)
8. ramzes, а, ну это понятно, я думал, ты про JS

9. ramzes (28.09.2011 / 22:45)
9. dima.london, кроме всего прочего, у меня отправляет плюсы на ура =) тоже jquery но 1.3.2.js

10. ramzes (28.09.2011 / 23:04)
12. ZiGR, так и так, его надо реплейситьsmile
интересно то что, у меня нет такой проблемы, она точно должна быть? может дело не в самом js? может ему что то мешает?
.. хотя я немного иначе данные отправляю..

11. Дмитрий (29.09.2011 / 00:43)
11. ramzes, я читал, что 1.3.2, 1.4.2 и 1.5.2 бажные - допускают атаку через XSS

12. ramzes (29.09.2011 / 01:18)
15. dima.london, какую это? пардон я крайне плохо понимаю какие могут быть уязвимости в js вообще

13. Дмитрий (29.09.2011 / 01:32)
Честно, не могу найти статью. Там подробно расписано это. Немного упоминается ЗДЕСЬ
— Пофиксили уязвимость XSS: $("#id") работал как селектор, $("<img>") создавал элемент, а $("#<mg>") тоже создавал элемент.

Добавлено через 02:39 сек.
к слову, уже вышла версия 1.6.4

14. ramzes (29.09.2011 / 02:31)
17. dima.london, заменил на 1.6.4, все отлично с +
ни куда не исчезаютsmile видимо дело в том как ты отправляешь данные

15. Валерий (08.11.2011 / 16:50)
Сегодня столкнулся с той же проблемой.. + вырезался.. да и вообще всё что после плюса шло, на сервак не отправлялось. Решил проблему так. Нужно просто обрабатывать значения функцией encodeURIComponent .. это аналог php функции urlencode

post = "var1=" + encodeURIComponent(var1) + "&var2=" + encodeURIComponent(var2);

URL: https://visavi.net/topics/25206