Как экранировать специальные символы из текстовой области с помощью jQuery post()

#javascript #json #jquery #post

#javascript #json #jquery #Публикация

Вопрос:

У меня есть форма, состоящая из нескольких текстовых полей и текстовой области для заметок / комментариев к заказу. Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда я ввожу специальный символ в текстовой области, запрос ajax перестает работать. Я пытался экранировать специальные символы с помощью escape, escapeURIComponent и т. Д., Но, похоже, ничего не работает. Удаление специальных символов работает, но это не решает мою проблему. Есть предложения? ниже приведен фрагмент кода, который у меня есть:

 $.post(getPost('addComponent'), {
                componentType:$('#componentType').val(),
                productQty:$('#productQty').val(),
                comments:$("#orderNotes").val()
            }, function(data, statusCode) {
        if (statusCode === 'success') {
            updateComponentContainer(data);
        } else {
            return false;
        }
    }, 'json');
  

Ответ №1:

Взгляните на jQuery.serialize()

http://api.jquery.com/serialize/

** РЕДАКТИРОВАТЬ **

Посмотрите на этот jsFiddle:

http://jsfiddle.net/nPdW9/

Комментарии:

1. Насколько я понимаю, serialize() сериализует всю форму правильно? Как бы вы это сделали только для одного элемента? в моем случае это текстовая область. Пожалуйста, дайте мне знать.

2. @Jrobertiko — Вы можете сериализовать один элемент. Посмотрите на jsFiddle, который я вставил в свой ответ.

Ответ №2:

Не уверен, что это за специальные символы, но кодировка base64 должна решить проблему.

http://www.webtoolkit.info/javascript-base64.html

и если вы хотите попробовать, прежде чем покупать, демонстрационную страницу!

http://www.webtoolkit.info/demo/javascript-base64