Подтвердить что ты не робот

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?

4b9b3361

Ответ 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 +