IT兄弟連 JavaWeb教程 AJAX常見問題

1  中文亂碼問題瀏覽器

●  POST提交亂碼緩存

亂碼緣由:全部瀏覽器對Ajax請求參數都使用UTF-8進行編碼,而服務器默認使用ISO-8859-1去解碼,因此產生亂碼。服務器

解決方法:在服務器接收請求參數前設置解析編碼。dom

request.setCharacterEncoding("UTF-8");編碼

●  GET提交亂碼code

亂碼緣由:IE瀏覽器發送請求時,會默認使用GBK字符集對請求參數進行編碼,而其餘瀏覽器會使用UTF-8.服務器默認狀況下使用的時ISO-8859-1進行解碼,因此產生亂碼。對象

解決方法:在瀏覽器發送請求前,先將URL利用encodeURI()編碼。encodeURI會使用UTF-8對請求地址中的中文進行編碼。get

var uri = 'xxx?name=張三';亂碼

xhr.open('get',encodedURI(uri),true);隨機數

在服務器端進行編碼轉換:

String name = request.getParameter("name");

name = new String(name.getBytes("ISO-8859-1"),"UTF-8");

 

2  緩存問題

不一樣瀏覽器對於請求相同地址的處理方案以下:

Chrome  從新發送請求

FireFox 從新發送請求

IE       再也不發送請求

IE瀏覽器提供的Ajax對象,在發送GET請求時,會先查看是否訪問過該地址,若是該地址訪問過,瀏覽器就不會再發送請求,而是取出先前瀏覽器緩存的數據內容。

瀏覽器緩存的解決方案:

s在請求地址後面添加一個系統時間或者一個隨機數字,例如:

xhr.open('get','load.do?r=' + new Date().getTime(),true);

xhr.open('get','load.do?r=' + Math.random());

相關文章
相關標籤/搜索