2013-06-20 3 views
0

J'ai une forme complexe que l'utilisateur a quelques sélections à faire et aussi quelques zones de texte à remplir avec info. Le formulaire fonctionne très bien et les données sont transmises via JSON à mon contrôleur MVC et tout fonctionne correctement.Jquery Entrée de l'utilisateur dans JSON

Cependant, les utilisateurs étant les utilisateurs que j'ai trouvé que certains utilisent les caractères spéciaux comme « £ $% &(), etc, et ceux-ci sont à l'origine de la JSON à formater correctement si l'action du contrôleur ne lie pas correctement.

SO ma question est de savoir comment puis-je encoder l'entrée de texte de l'utilisateur afin qu'il forme JSON valide

façon actuelle, je collectionne les données sont:..

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

Merci

Falaise.

Répondre

0

Ce n'est pas une fonction réelle pour échapper des caractères pour json.

Une fonction pour ce faire serait quelque chose comme ça

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; 
} 

Ensuite, vous pouvez faire

EmailMessage = makeSafe(EmailMessage); 

Je l'ai ajouté à mon objet chaîne comme ci-dessous, je peux référencer chaque fois que je besoin

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

Brillant Je commençais juste dans cette voie, mais vous avez une grâce parfaite solution. –