前臺用的的DataGrid來顯示數據,後臺用ashx來處理返回數據(JSON格式),返回一般的數據還沒什麼問題,但是在返回複雜數據例如HTMl代碼的時候,就很容易出問題了,現在我隨便從網上覆制了一部分html代碼存到數據庫,然後在返回給前臺的時候,直接瀏覽ashx頁面數據沒有任何問題,但是DataGrid就是不顯示數據,在百度了很久後還是沒有搞明白,最後在搞人的指點下終於明白了這是爲什麼,就是換行符影響的,參見http://www.cnblogs.com/springfield/archive/2010/05/24/1724383.html,明確說了在構造json數據的時候不能有換行符,然後我就一直想把換行符給替換了,其實不是不能有換行符,只要轉義一樣就可以了,例如
var a="'asdas':5345345
3423424"; //這種會出錯
var b="'asdsad':345345\
123131"; //轉義掉換行符,就不會出錯
知道了原理後就好辦多了,在後臺網前臺輸出json之前,先對數據做下處理工作:
public static string cleanString(string newStr)
{
string tempStr = newStr.Replace("\r\n", "\\\r\n");//轉義換行符
newStr = newStr.Replace("\"", "'"); //替換雙引號爲單引號
return tempStr;
}
處理之後的json數據在每次換行的地方都加了一個轉義符\,這樣當轉行爲js對象的時候就不會出錯了
DataGrid顯示正常