2013-06-20 7 views
0

У меня есть сложная форма, которую пользователь имеет для выбора, а также несколько текстовых полей для заполнения информацией. Форма отлично работает, и данные передаются через JSON на мой MVC-контроллер, и все работает нормально.JQuery Пользовательский ввод в JSON

Однако пользователи будучи пользователям я обнаружил, что некоторые используют специальные символы, такие как «£ $% &() и т.д., и они в результате чего JSON должен быть отформатирован неправильно, поэтому Действие контроллера правильно не являются обязательными.

SO мой вопрос, как я могу закодировать ввод текста от пользователя, так что он будет формировать действительный JSON

Текущего способ собирают данные является:..

var TelNo = $("#TelNo"). 
var EmailMessage = $("#EmailMessage").val(); 

Благодаря

Клифф.

ответ

0

Это не настоящая функция для экранирования символов для json.

Функция, чтобы сделать это было бы что-то вроде этого

function makeSafe(jsonf){ 
    jsonf= JSON.stringify(jsonf); 
    jsonf = jsonf.replace(/\\n/g, "\\n") 
             .replace(/\\'/g, "\\'") 
             .replace(/\\"/g, "\\"") 
             .replace(/\\&/g, "\\&") 
             .replace(/\\r/g, "\\r") 
             .replace(/\\t/g, "\\t") 
             .replace(/\\b/g, "\\b") 
             .replace(/\\f/g, "\\f"); 
    return jsonf; 
} 

Тогда вы могли бы сделать

EmailMessage = makeSafe(EmailMessage); 

я добавил его к моей строки объекта, как показано ниже, так что я могу ссылаться на него, когда я когда-либо

String.prototype.makeSafe= function() { 
    return this.replace(/\\n/g, "\\n") 
       .replace(/\\'/g, "\\'") 
       .replace(/\\"/g, "\\"") 
       .replace(/\\&/g, "\\&") 
       .replace(/\\r/g, "\\r") 
       .replace(/\\t/g, "\\t") 
       .replace(/\\b/g, "\\b") 
       .replace(/\\f/g, "\\f"); 
}; 
var EmailMessage = $("#EmailMessage").val() 
EmailMessage = EmailMessage.makeSafe(); 
+0

Блестящий Я только начинал с этого трека, но у вас есть отличное решение. –