Escape всех специальных символов в строке, которая отправляется jquery ajax
Я пытаюсь отправить текст в парах ключевых значений, делая сообщение contentType: "application/json; charset=utf-8",
ajax в веб-службе. Проблема, с которой я сталкиваюсь, заключается в том, что если один из параметров (принимающих текст от пользователя) имеет кавычки ("), он разбивает код [сообщение Eror: недопустимый объект, переданный в]. До сих пор я пробовал их без каких-либо успехов
var text = $("#txtBody").val();
var output1 = JSON.stringify(text);
var output2 = text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
Любые идеи о том, как избежать специальных символов для jQuery ajax post?
Ответы
Ответ 1
Почему бы не использовать escape
?
escape(text);
https://developer.mozilla.org/en/DOM/window.escape
ИЗМЕНИТЬ!!!!
Как указано в комментариях, это устарело.
Метод nonrecuted escape() вычисляет новую строку, в которой определенные символы были заменены шестнадцатеричной escape-последовательностью. Вместо этого используйте encodeURI или encodeURIComponent.
Вместо этого используйте одно из следующих действий:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
Ответ 2
Для тех, кто найдет этот вопрос:
Не использовать метод эвакуации, который был удален из Интернета
Используйте encodeURIComponent()
или encodeURI()
вместо этого
encodeURIComponent()
encodeURI()
Ответ 3
Уже существует функция escape (var), которая помогает вам избежать значений. Этого должно быть достаточно для цели, о которой вы говорите
var output2 = escape(text);
Ответ 4
У меня была такая же проблема, и для ее решения я изменяю способ, которым я делаю вызов ajax.
У меня было что-то вроде
var datatosend = "Hello+World";
$.ajax({
"type": "POST",
"data": "info=" + datatosend
И он отправляет сообщение post = Hello World, заменяя символ + пробелом.
Поэтому я меняю его на правильную строку json
$.ajax({
"type": "POST",
"data": {"info":datatosend},
и теперь он работает. Информация = Hello World +