亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

奇怪的回車換行問題

2024-07-21 02:02:28
字體:
來源:轉載
供稿:網友
在類unix中,是/n (0x0A)。以為沒有什么大的問題,沒想到,這次開發一個小程序,卻讓我對這個問題大為頭痛。

首先發現這個問題是這樣的:

我的這個程序采用的是Extjs+php的方式,通過ajax進行通訊。其中有個頁面,如圖:

兩個文本框,一個text,一個textarea,當textarea中含有回車換行的時候,會出現腳本錯誤。后面發現是因為如果服務器端返回的字符串換行了,會造成js解析出現錯誤,可見js在解析json數據時候的語法還是和在本地定義的字符串變量的語法一致的。一個字符串不能多行,有回車換行的時候需要轉義符號:/n (/r/n)。
不過這個并不是我要說明的問題,我要說明的問題是,當我在解決這個問題的時候,抓包分析的時候,發現一個有趣的現象,就是發現瀏覽器發送到服務器對回車換行的編碼不一致。
例如上圖中的字符串在通過extjs中的
復制代碼 代碼如下:

Ext.Ajax.request({
url:'CatMan.php',
form:this.FORM_NAME,
scope:this,
callback:function(o,s,r){
var retObj=Ext.decode(r.responseText);
if(retObj.success){
alert('保存成功!');
}
}
});

進行保存時候,發現發送到服務器的編碼是這樣的:
catdesc=%E6%9E%97%0A%0A%E5%B0%910A%0A%0Aa%E5%8D%8E
注意其中的紅色標記的%0A,這是/n的編碼。/r的編碼竟然不見了。
然后我如果采用form submit直接提交,卻發現編碼是:
%E6%9E%97%0D%0A%0D%0A%E5%B0%91%0D%0A%0D%0A%0D%0Aa%E5%8D%8E
發現/r(%0D)的編碼是在的。
(以上為在IE9中測試結果。)
難道是ExtJs的問題?
如果分析Extjs的源代碼,找到取form值得地方。如下:
復制代碼 代碼如下:

serializeForm : function(form) {
debugger
var fElements = form.elements || (document.forms[form] || Ext.getDom(form)).elements,
hasSubmit = false,
encoder = encodeURIComponent,
name,
data = '',
type,
hasValue;
Ext.each(fElements, function(element){
name = element.name;
type = element.type;
if (!element.disabled && name) {
if (/select-(one|multiple)/i.test(type)) {
Ext.each(element.options, function(opt){
if (opt.selected) {
hasValue = opt.hasAttribute ? opt.hasAttribute('value') : opt.getAttributeNode('value').specified;
data += String.format("{0}={1}&", encoder(name), encoder(hasValue ? opt.value : opt.text));
}
});
} else if (!(/file|undefined|reset|button/i.test(type))) {
if (!(/radio|checkbox/i.test(type) && !element.checked) && !(type == 'submit' && hasSubmit)) {
data += encoder(name) + '=' + encoder(element.value) + '&';
hasSubmit = /submit/i.test(type);
}
}
}
});
return data.substr(0, data.length - 1);
},

可以發現extjs采用的是js中的encodeURIComponent函數進行值的編碼。
難道是encodeURIComponent的問題?
搜索網絡,發現一篇博文中提到這個問題,見http://www.yeahxj.com/2011/11/07/enter-code-for-all-browser/ (回車符 /r/n 在各個瀏覽器中無恥的表現)
于是我在ie6,ie8,ie9中分別進行了測試,發現果然存在這個問題。
總結:
這個問題雖然小,但是在某些場合卻會讓人和頭痛,這也是搞計算機程序設計人員的悲哀,大量的不兼容,造成很多程序出現各種各樣奇怪的問題。例如這個小問題可能造成一個結果,例如,我這個程序,需要在前臺顯示內容的時候保留回車換行。這種一般有兩種處理方法,一種是采用<pre>標簽,但是這個標簽用起來很不方便的,嘗試發現格式變化不太好控制。另外一種方法就是將回車換行變為<br />標記。我就是采用的這種方法,剛開始我寫的正規表達式是//r/n/,結果發現什么都沒匹配到,后面我就改成/[/r/n]/但是這種造成的問題就是在ie6,7,8中將會多出一行來。最后為了統一處理,我改為先替換//r/n/組合,然后再替換//n/。問題得到解決。
** 本人原創文章,轉摘請保留本段內容,萬分感謝!
** microdreamsoft(Lin Shaohua):
** 由于本人水平有限,歡迎各位高手指正。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品三级美女白浆呻吟| 性色av一区二区咪爱| 久久久这里只有精品视频| 久久久亚洲网站| 国产成人精品日本亚洲| 国产精品欧美激情在线播放| 亚洲最大av在线| 国产精品久久久久福利| 91干在线观看| 亚洲视频国产视频| 亚洲性无码av在线| 国产91精品久久久| 懂色av影视一区二区三区| 亚洲免费一级电影| 一区二区在线视频播放| 欧美一区二区色| 久久91超碰青草是什么| 精品国产一区二区在线| 国产精品免费久久久| 欧美一级黑人aaaaaaa做受| 欧美成人免费播放| 九九热这里只有精品免费看| 97色在线观看| 精品国偷自产在线视频| 成人黄色短视频在线观看| 精品久久久久久中文字幕大豆网| 日韩69视频在线观看| 欧美日韩一区免费| 国产精品盗摄久久久| 精品久久国产精品| 国产美女91呻吟求| 九九热这里只有在线精品视| 亚洲国产精品人人爽夜夜爽| 在线观看欧美成人| 国产精国产精品| 欧美激情视频给我| 国产精品色午夜在线观看| 中文综合在线观看| 久久久久久欧美| 日韩av一区二区在线| 91精品国产高清久久久久久91| 91精品国产自产在线老师啪| 欧美激情按摩在线| 国内精品久久影院| 日韩在线视频网站| 亚洲аv电影天堂网| 人体精品一二三区| 久久午夜a级毛片| 精品magnet| 欧美亚洲伦理www| 亚洲第一页在线| 日韩欧美成人网| 亚洲图片欧美日产| 国产午夜精品一区理论片飘花| 亚洲精品美女久久| 久久久精品国产亚洲| 亚洲福利视频网| 黄色一区二区在线观看| 久久久久久久91| 久久中文字幕在线| 91av在线播放视频| 影音先锋欧美精品| 欧美性xxxx在线播放| 日本精品中文字幕| 欧洲s码亚洲m码精品一区| 国产精品99蜜臀久久不卡二区| 久久精品国产精品| 亚洲精品suv精品一区二区| 国产精品久久综合av爱欲tv| 91影视免费在线观看| 成人羞羞国产免费| 韩国三级日本三级少妇99| 国产精品一区二区电影| 国产狼人综合免费视频| 一本大道香蕉久在线播放29| 久久久久国产一区二区三区| 国产精品av网站| 精品一区二区三区三区| 色婷婷av一区二区三区久久| 欧美高清自拍一区| 精品福利一区二区| 国产精品小说在线| 亚洲在线免费观看| 日韩视频永久免费观看| 日韩免费黄色av| 久久躁狠狠躁夜夜爽| 欧美片一区二区三区| 亚洲精品成人久久| 亚洲欧美日韩中文视频| 亚洲精选一区二区| 国产噜噜噜噜噜久久久久久久久| 欧美日韩亚洲一区二区三区| 久久久亚洲精品视频| 亚洲精品国产精品国自产观看浪潮| 精品国产31久久久久久| 亚洲大胆美女视频| 日韩成人在线视频| 日韩av网站大全| 日韩av免费在线观看| 国产精品久久久久99| 国产日本欧美一区二区三区在线| 亚洲精品网址在线观看| 日韩在线观看电影| 亚洲人a成www在线影院| 亚洲欧洲在线看| 成人在线视频网| 成人免费看黄网站| 久久人人爽国产| 欧美一级大胆视频| 成人国产精品久久久| 97成人超碰免| 午夜欧美不卡精品aaaaa| 自拍偷拍免费精品| 国产一区二区三区视频| 精品国产一区二区三区久久狼黑人| 亚洲男人av电影| 欧美最猛黑人xxxx黑人猛叫黄| 全色精品综合影院| 欧美又大粗又爽又黄大片视频| 国产高清视频一区三区| 中文字幕欧美在线| 黑人巨大精品欧美一区免费视频| 国产91露脸中文字幕在线| www.日韩av.com| 这里只有视频精品| 欧美激情在线播放| 欧美性生交xxxxx久久久| 国产成人精品综合久久久| 日韩免费观看高清| 亚洲天堂开心观看| 中日韩午夜理伦电影免费| 日韩激情第一页| 精品国偷自产在线视频99| 国产女人18毛片水18精品| 久久久久久久久91| 亚洲毛片在线观看| 亚洲free性xxxx护士hd| 久久伊人色综合| 亚洲九九九在线观看| 日本免费一区二区三区视频观看| 精品视频www| 一区二区三区视频免费| 亚洲一区二区三区在线视频| 美女久久久久久久| 精品国产电影一区| 亚洲精品久久久久久久久久久久久| 欧美高清视频免费观看| 久久久精品久久久| 国内精品久久久久| 亚洲电影在线看| 日韩美女视频在线观看| 91系列在线观看| 中文字幕国产亚洲| 欧美成年人视频网站| 狠狠色香婷婷久久亚洲精品| 日韩精品在线观看一区| 亚洲一区二区三区四区视频| 国产黑人绿帽在线第一区| 夜夜狂射影院欧美极品| 日韩精品黄色网| 欧美与欧洲交xxxx免费观看| 亚洲男人av在线| 日本精品在线视频| 91日韩在线视频|