JavaScript中的常見(jiàn)問(wèn)題解決方法(亂碼,IE緩存,代理)
解決AJAX中文亂碼常用的兩種方法
1. 在客戶端進(jìn)行encodeURI(utf-8也可以不做,默認(rèn)),在服務(wù)器端將iso-8859-1編碼轉(zhuǎn)為utf-8編碼
2.在客戶端進(jìn)行兩次encodeURI,在服務(wù)器端進(jìn)行一次轉(zhuǎn)換。
第2種方法能解決問(wèn)題的原因:
進(jìn)行兩次轉(zhuǎn)換后,在第一次getparameter方法中進(jìn)行第一次解碼,因?yàn)榻獬鰜?lái)的是英文(第一次encode之后的結(jié)果),所以不會(huì)出問(wèn)題;第二次使用URLDecoder的decode方法,所以能正常解決這個(gè)問(wèn)題。需要注意的是,在decode方法中需要指定解碼格式為"utf-8"。很多中文平臺(tái)使用的并不是utf-8(我猜應(yīng)該是gb2312),所以decode的默認(rèn)轉(zhuǎn)換并不一定是utf-8。
之所以在客戶端進(jìn)行兩次編碼而在服務(wù)器只進(jìn)行一次解碼,我猜是Tomcat的緣故。Tomcat為了讓程序員編程方便(get和post用一樣的代碼),所以會(huì)自動(dòng)對(duì)post的編碼進(jìn)行解碼,所以在服務(wù)器端就少了一次手寫(xiě)的解碼語(yǔ)句。之所以還要再進(jìn)行一次編碼解碼,是因?yàn)門(mén)omcat自動(dòng)解碼的操作并不一定是按照我們希望的編碼解的,但英文等字符無(wú)論在什么平臺(tái)上解出的碼都是一樣的,因此可以讓Tomcat自動(dòng)解譯出第一次編碼后的結(jié)果,再手動(dòng)來(lái)解譯encodeURI一次的代碼,就可以獲得自己所需的格式。
補(bǔ)充:現(xiàn)在又觀察了一下瀏覽器的行為,覺(jué)得不是Tomcat的緣故,因?yàn)樵跒g覽器里的顯示的是中文,而不是編碼后的東西,對(duì)于這些個(gè)編碼問(wèn)題現(xiàn)在是一頭霧水,希望知道這方面知識(shí)的朋友不吝賜教!
解決IE緩存的問(wèn)題
加一個(gè)時(shí)間戳,并且要檢查?
解決代理問(wèn)題
要將?轉(zhuǎn)為$
示例代碼:
function verify() {
//解決中文亂麻問(wèn)題的方法1,頁(yè)面端發(fā)出的數(shù)據(jù)作一次encodeURI,服務(wù)器段使用new String(old.getBytes("iso8859-1"),"UTF-8");
//解決中文亂麻問(wèn)題的方法2,頁(yè)面端發(fā)出的數(shù)據(jù)作兩次encodeURI,服務(wù)器段使用URLDecoder.decode(old,"UTF-8")
var url = "AJAXServer?name=" + encodeURI(encodeURI($("#userName").val()));
url = convertURL(url);
$.get(url,null,function(data){
$("#result").html(data);
});
}
//給url地址增加時(shí)間戳,騙過(guò)瀏覽器,不讀取緩存
function convertURL(url) {
//獲取時(shí)間戳
var timstamp = (new Date()).valueOf();
//將時(shí)間戳信息拼接到url上
//url = "AJAXServer"
if (url.indexOf("?") >= 0) {
url = url + "&t=" + timstamp;
} else {
url = url + "?t=" + timstamp;
}
return url;
}
相關(guān)文章
JavaScript之瀏覽器對(duì)象_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
JavaScript可以獲取瀏覽器提供的很多對(duì)象,并進(jìn)行操作。下面通過(guò)本文給大家介紹JavaScript之瀏覽器對(duì)象的相關(guān)知識(shí),一起看看吧2017-07-07document.documentElement && document.documentElement
document.documentElement && document.documentElement.scrollTop...2007-12-12bootstrap table之通用方法( 時(shí)間控件,導(dǎo)出,動(dòng)態(tài)下拉框, 表單驗(yàn)證 ,選中與獲取信息)代碼分享
這篇文章主要介紹了bootstrap table之通用方法( 時(shí)間控件,導(dǎo)出,動(dòng)態(tài)下拉框, 表單驗(yàn)證 ,選中與獲取信息)代碼分享,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-01-01js實(shí)現(xiàn)文字垂直滾動(dòng)和鼠標(biāo)懸停效果
這篇文章主要介紹了js實(shí)現(xiàn)文字垂直滾動(dòng)和鼠標(biāo)懸停效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-12-12JS實(shí)現(xiàn)隨機(jī)生成10個(gè)手機(jī)號(hào)的方法示例
這篇文章主要介紹了JS實(shí)現(xiàn)隨機(jī)生成10個(gè)手機(jī)號(hào)的方法,涉及javascript數(shù)值運(yùn)算與隨機(jī)數(shù)操作相關(guān)使用技巧,需要的朋友可以參考下2018-12-12