摘要:JQuery trim Function之靈異事件!
前兩天在客戶那邊遇到一個很奇怪的問題...
狀況說明:使用者在WEB上面輸入一些特殊字元,但寫入到資料庫之後,再查詢一下欄位,會發現該特殊字元卻消失了。
這麼特殊的情況,由於在客戶那邊不好記錄,只好回家再將當時的狀況模擬一遍。
Step 1: 先在畫面上拖拉HTML控件,一顆Button及一個TextArea如下
Step 2:專案的開發架構是將畫面上所有的textbox資料,先截取下來並組成xml字串,再往後做post,所以前端準備的Javascript如下
function replaceString(str)
{
var replaceStr = str;
replaceStr = replaceStr.replace(/&/g, "&");
replaceStr = replaceStr.replace(/\n/g, "
");
replaceStr = replaceStr.replace(/<");
replaceStr = replaceStr.replace(/>/g, ">");
return replaceStr;
}
function submitAction()
{
var strXml = '' + replaceString($.trim($('#TextArea1').val())) + ' ';
$.ajax({
type:'POST',
url: 'testAction.aspx',
dataType: 'text',
data: strXml,
success: function(data)
{
var $retData = $('' + data + ' ');
$('#TextArea1').val($retData.find('CONTENT').text());
}
});
}
Step 3:後端則透過泛型處理常式來接資料,寫入DB後再馬上撈出來,轉成XML格式送到前端。
public void ProcessRequest(HttpContext context)
{
//讀取前端POST來的資料
Stream inputStream = context.Request.InputStream;
StreamReader sr = new StreamReader(inputStream);
string strXml = sr.ReadToEnd();
//轉成xml物件
XElement xele = XElement.Parse(strXml);
//寫入資料至DB
DataSet1TableAdapters.JQueryTB1TableAdapter Adatper = new DataSet1TableAdapters.JQueryTB1TableAdapter();
Adatper.Insert("A001",xele.Element("Msg").Value);
//查出資料並轉成xml格式回傳
DataSet ds = new DataSet();
ds.Tables.Add(Adatper.GetData());
context.Response.ContentType = "text/xml";
context.Response.Write(ds.GetXml());
}
#endregion
}
Step 4:辛苦寫完一堆程式碼終於可以測試了(WEB開發一點也沒有比較輕鬆啊><),依照畫面輸入資料吧
Step 5:挖勒,原本應該消失的【&】,居然又跑出來了........好吧!!!只好當作當天鬼遮眼><