Отсутствие символов при публикации данных в AJAX с использованием JavaScript - PullRequest
0 голосов
/ 31 октября 2011

У меня есть текстовая область:

<textarea id="my_text"></textarea>

И есть некоторый ajax-код в javascript, подобный этому:

var xmlhttp = new XMLHttpRequest();
var my_text = document.getElementById("my_text").value;
xmlhttp.open("POST", ".", true);
xmlhttp.send("my_text=" + my_text + "&foo=1");

Когда я заполнил текстовое поле строкой abc +1 +2 +3 и запустил код JS. Значение «my_text», которое я получаю на стороне сервера, равно abc 1 2 3.

Как я могу изменить код JS, чтобы получить правильную строку abc +1 +2 +3 на стороне сервера.

Ответы [ 2 ]

4 голосов
/ 31 октября 2011

Используйте encodeURIComponent(my_text) для подготовки текста к отправке. Эта функция всегда должна использоваться для параметров, чтобы правильно экранировать символы. Вы уже сталкивались с ситуацией, когда ваш код ломался.
Еще один ужасный результат - не экранирование символов происходит, когда пользователь использует & в своей строке, эффективно создавая дополнительный параметр.

xmlhttp.send("my_text=" + encodeURIComponent(my_text) + "&foo=1");
0 голосов
/ 31 октября 2011

Другой вариант - использовать функцию escape.

xmlhttp.send ("my_text =" + escape (my_text) + "& foo = 1");

Вы теряли символы, потому что знак + является зарезервированным символом HTTP, что означает пробел ('').

РЕДАКТИРОВАТЬ: Совершенно верно, escape не будет работать в этом случае, поскольку он заменит пробелы, но не плюс символы, с их шестнадцатеричным представлением. Извините за перепутать (покраснеть)

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