0

我有一个复杂的表单,用户需要做出一些选择,还有一些文本区域要填写信息。表单效果很好,数据通过 JSON 传递到我的 MVC 控制器,一切正常。

但是,作为用户的用户,我发现有些用户正在使用特殊字符,例如“£$%&() 等,这些字符导致 JSON 格式不正确,因此控制器操作无法正确绑定。

所以我的问题是如何编码来自用户的文本输入,以便它形成有效的 JSON。

我目前收集数据的方式是:

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

谢谢。

悬崖。

4

1 回答 1

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();
于 2013-06-20T15:52:22.077 回答