Как избежать "&" символа амперсанда при вводе формы с помощью jQuery - PullRequest
14 голосов
/ 16 февраля 2011

У меня проблема с моим скриптом jQuery, который отправляет данные методом POST. Проблема заключается в том, что всякий раз, когда он отправляет данные через Ajax с амперсандом «&» в предложении, он обрезает предложение при обнаружении «&».

Пожалуйста, проверьте изображения ниже для получения дополнительной информации.

The text that pass to ajax POST Output after ajax POST on firebug Data that has been save in the database The jQuery ajax POST

Ответы [ 5 ]

17 голосов
/ 16 февраля 2011

htmlentites

Эта функция идентична htmlspecialchars () во всех отношениях, кроме htmlentites (), все символы, которые имеют эквиваленты сущностей символов HTML, преобразуются в эти сущности.

Если вы хотите декодировать вместо (наоборот), вы можете использовать html_entity_decode ().

Пример:

echo htmlentities("&"); // &

если вы непосредственно делаете это в браузере, вы можете использовать:

encodeURIComponent(string input);
* * 1 022 Пример: * 1 023 *
encodeURIComponent($.trim($("input[name=t-tim_rendered-"+id+"]").val().toString()));
7 голосов
/ 11 января 2012

У меня была огромная проблема именно с этой ситуацией.

Это просто говорит о том, что последний ответ от Эндрю Кестера - идеальный ответ, который я искал.

В случае, если вы передаете несколько записей формы из формы jQuery в PHP через.ajax () вызовите так:

data: "name =" + name + "& message =" + message + ...

НЕ ИСПОЛЬЗУЙТЕ ЭТОТ МЕТОД, он заблокирует амперсанд(&) символ от написания пользователем в любом из полей ввода вашей формы.

Используйте это вместо того, как предложено Эндрю:

data: {"name": name,«электронная почта»: электронная почта, «тема»: тема, «комментарии»: комментарии},

Таким образом, пользователь может написать любой специальный символ, не беспокоясь о конфликте с объявлением ajax.

4 голосов
/ 16 февраля 2011

Вы можете использовать встроенную функцию escape () javascript

В строке 74

data: : "&task_d=" + escape(task_d) + "" 

Кроме того, вы можете заключить значения строки запроса в кавычки

data: : "&task_d='" + task_d + "'" 
3 голосов
/ 16 февраля 2011

Если вы передадите свой параметр data как объект Javascript, он преобразует символы для вас (и IMO сделает код более аккуратным) Поэтому вы должны изменить свой $ .ajax-вызов на следующее:

data: {"user_id": user_id, "time_r": time_r, "task_d": task_d, "p_id": p_id, "df": finished},
1 голос
/ 07 мая 2014

Вы можете использовать 'encodeURIComponent' для выполнения кодирования URL для этого компонента.Я использовал это и проверял браузеры IE, Firefox и Chrome.

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