过滤方法用的是Discuz中的过滤方法!
/// <summary>
/// 加载事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
FileStream fsSteam = new FileStream(Server.MapPath("~/SQLLog.txt"), FileMode.Open); //SQLLog.txt 里面的文本为:今天真\n\\n\b\\\\\\的很"高兴"!
StreamReader sr = new StreamReader(fsSteam,System.Text.Encoding.GetEncoding("gb2312"));
string message = JsonCharFilter(sr.ReadToEnd()); // 这里需要过滤一下,以保证JSON解析后显示的值与SQLLog.txt中的一模一样。
sr.Close();
fsSteam.Dispose();
string json = "{ IfSuccess : true, Message : '" + message + "' }";
this.ltMessage.Text = json;
}
}
/// <summary>
/// Json特符字符过滤,参见http://www.json.org/
/// </summary>
/// <param name="sourceStr">要过滤的源字符串</param>
/// <returns>返回过滤的字符串</returns>
public static string JsonCharFilter(string sourceStr)
{
sourceStr = sourceStr.Replace("\\", "\\\\");
sourceStr = sourceStr.Replace("\b", "\\\b");
sourceStr = sourceStr.Replace("\t", "\\\t");
sourceStr = sourceStr.Replace("\n", "\\\n");
sourceStr = sourceStr.Replace("\n", "\\\n");
sourceStr = sourceStr.Replace("\f", "\\\f");
sourceStr = sourceStr.Replace("\r", "\\\r");
return sourceStr.Replace("\"", "\\\"");
}
前台代码:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Literal ID="ltCurrentMessage" runat="server" />
</div>
<div id="divMessage"><asp:Literal ID="ltMessage" runat="server" /></div>
<div>
<asp:Button ID="btnSubmit" runat="server" Text="提交" OnClick="btnSubmit_Click" />
</div>
</form>
<script language="javascript" type="text/javascript">
///<summary>用正则表达式将前后空格,用空字符串替代。</summary>
String.prototype.trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
var jsonStr = document.getElementById("divMessage").innerHTML.trim();
var jsonObj = eval("(" + jsonStr + ")");
alert(jsonObj.IfSuccess);
alert(jsonObj.Message);
</script>
</body>
</html>
谢谢浏览!