JQuery trim Function之靈異事件!

摘要: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:挖勒,原本應該消失的【&】,居然又跑出來了........好吧!!!只好當作當天鬼遮眼><