2009年9月27日 星期日

ExtJS -實戰經驗談001- 處理 TextArea 多行資料問題

ExtJS -實戰經驗談001- 處理 TextArea 多行資料問題

(書上沒說的 , 自己有碰到的 , 並且解掉的問題 , 就順便記下來)
(太基本的 , 請自己去看書)

最近在使用 ExtJS 開發某個 Web ,
其中我使用了 TextArea , TextArea 可以輸入多行資料並且允許你按 Enter 鍵換行...

背端使用 ASP 接收 ExtJS的 Form 傳送過來的TextArea的資料 , 也成功的存入資料庫

但是要從資料庫讀取 TextArea 的資料並且轉成 JSON的資料格式傳回前端給 ExtJS處理時 ,
發現一直出現錯誤...  <怎麼知道找出錯誤的? 待續 - ExtJS -實戰經驗談002- 除錯工具 >
原因是  : 前端的 ExtJS 在處理 傳回的 JSON資料時 , 不能接受跟處理 資料內容中有包含換行符號的資料 ;


那怎麼辦?
(1)
在被端要傳回資料的 ASP 在要把資料轉成 JSON格式傳回前 ,
將資料中的換行符號( \r\n) 給取代掉 代換成


(2)
在前端接受的ExtJS 中 , 把街收到的 JSON 格式資料 ,
重新把 收到的資料中有
的重新換成 (\r\n) , 然後處理過的資料 , 重新塞值到 ExtJS 的 Form 中的
TextArea 中 , 就可以完成由資料庫中還原的動作


注意A:
(1) 只有在還原到前端的的 ExtJS 的 Form 的 Text Area 時需要代換 (
為 (\r\n))
(2) 如果是要放在 ExtJS 的Grid 中的 , 就不需要特別還原
為(\r\n)

注意B:
換行字元大不同....

如果你是使用 IE , 同樣是網頁中的 Form 的 TextArea , 如果是有多行內容的 ,
傳到背端(Server 端) , 收到的換行字元會是 \r\n

但是你是使用 FireFox , 同樣是網頁中的 Form 的 TextArea , 如果是有多行內容的 ,
傳到背端(Server 端) , 收到的換行字元會是 \r (少掉一個 \n)
所以在動作(1)作還原處理的代換動作時 , 要注意是代換 \r\n 還是代換 \r 為

沒有留言: