JQuery库Ajax返回Json对象如果过滤关键字符???
今天碰到一个非常诡异的问题,一直到下午下班都没有解决,花了半天时间。。
需求是是一个前端的一个tab控件,没点击一个页签,ajax动态获取数据,每个页签都有分页,自己动态输出的。。
如:
全部 部门一 部门二 部门三 部门四………………
今天上午突然出现一个奇怪的问题,就是点击全部的时候,怎么也显示不了数据,后面基本都可以显示出来。。。
一直到晚上,问题大概断定为用户可能输入了英文的转义符号"\",回来尝了把,果然,
protected void Page_Load(object sender, EventArgs e)
{
string userName = string.IsNullOrEmpty(Request.QueryString["userName"]) ? "" : Request.QueryString["userName"].ToString();
int age = string.IsNullOrEmpty(Request.QueryString["age"]) ? 0 : Convert.ToInt32(Request.QueryString["age"]);
string address = "s;'d\\\\\\\"fs;dfk";
StringBuilder sb = new StringBuilder();
sb.Append("{");
sb.AppendFormat("\"userName\":\"{0}\",\"age\":\"{1}\",\"address\":\"{2}\"", userName, age, address);
sb.Append("}");
Response.Write(sb.ToString());
}
<script type="text/javascript">
$(function () {
$.ajax({
type: "GET",
url: "Ajax/Demo.aspx",
data: "userName=qingyun",
success: function (data) {
alert("userName=" + data.userName);
alert("age=" + data.age);
alert("address=" + decodeURIComponent(data.address));
},
error: function (red) {
alert("error");
},
dataType: "json"
});
});
</script>
其中需要注意的是:
sb.Append("{");
sb.AppendFormat("\"userName\":\"{0}\",\"age\":\"{1}\",\"address\":\"{2}\"", userName, age, address);
sb.Append("}");
我想知道,如果用户数据里面包括了很多英文的转义符号"\",我该怎么“友好”的显示出来???
[解决办法]
json格式要求之严,又岂是一个\号呀。 手写json是极不明智的, 效率低,而且容易出错。 如果有一个工具给你, 只要你把 List, DataTable 或者对象传过去, 就可以返回一个绝对没有错误的json字符串, 是何等的方便啊。
建议你还是用 newtonsoft.json.dll , 网上一找一大把。
.net 也自带转换工具, 但比上面的那个稍差一点点。