码迷,mamicode.com
首页 > 编程语言 > 详细

c#和javascript特殊字符的前后端转换

时间:2015-04-01 14:53:26      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

前段时间做一个项目,需要处理输入的特殊字符的问题。所谓特殊字符,主要指除字母、数字、汉字等之外的一些符号,项目的要求是不管用户输入什么字符,都可以在界面上原样显示出来。我们知道javascript有符号的编码和解码方法:escape和unescape,而c#其实也有对应的方法Microsoft.JScript.GlobalObject.escape和Microsoft.JScript.GlobalObject.unescape。那具体怎样使用呢?

 

1.ajax方式从后台取数据到前端转换成json格式,c#代码要对特殊字符串进行编码,否则前端可能无法转换成json格式的数据。

比如字符串中包含双引号、逗号、冒号等跟json格式冲突的符号时,如果不进行转换,json转换时会报错。此时c#代码需要调用Microsoft.JScript.GlobalObject.escape(string str)方法将该字符串进行编码后组织成json字符串response到前端,前端ajax接收到该字符串时需要调用javascript的unescape(str)方法进行解码后再使用。当然首先需要添加Microsoft.JScript的引用。

例:

定义字符串

 string str = "...,:";

  StringBuilder builder = new StringBuilder();

不转换输出

builder.Append("{");
builder.AppendFormat("\"content\":\"{0}\"", str);
builder.Append("}");

context.Response.Write(builder.ToString());

ajax端代码:

$.ajax({

url: "Hander.ashx",

dataType: "json",
type: "get",
data: { method: "getName" },
beforeSend: function () {
},
success: function (data, textStatus){

if(data){

//前端采用unesacpe转换需要的数据。

var name=unescape(data.name);

//......

}

},

error: function (XMLHttpRequest, textStatus, errorThrown){

}

c#端代码不转换时ajax的error方法会执行,可以取得错误信息。

 

而c#代码转换其实很简单,只需要将上面的builder.AppendFormat("\"content\":\"{0}\"", str)换成builder.AppendFormat("\"content\":\"{0}\"", Microsoft.JScript.GlobalObject.escape(str))即可。

 

2.ajax方式从前端传数据给后端。需要将特殊字符进行escape编码,否则通过get方式传递数据时如果有?、&、=等字符就会出现异常,因为这几个字符是get方式的url的参数连接符。

var name="?%&=" ;

$.ajax({

url: "Hander.ashx",

dataType: "json",
type: "get",
data: { method: "setName",name:name},
beforeSend: function () {
},
success: function (data, textStatus){

}

此时需要对name进行escape编码再传递给后台,name=escape(name)。

 

c#端接收的时候就很简单了,调用Microsoft.JScript.GlobalObject.unescape(context.Request[name])即可。

 

说了这么多,其实就是一句话的事,javascript的unescape和escape对应c#的Microsoft.JScript.GlobalObject.unescape和Microsoft.JScript.GlobalObject.escape方法。自己根据需要调用就是了。

 

c#和javascript特殊字符的前后端转换

标签:

原文地址:http://www.cnblogs.com/bulusli/p/4383526.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!