2021-05-12 14:32:11
ajax回撥引數亂碼怎麼辦?
Ajax 即「Asynchronous Javascript And XML」(非同步 JavaScript 和 XML),是指一種建立互動式網頁應用的網頁開發技術。
Ajax = 非同步 JavaScript 和 XML 或者是 HTML(標準通用標示語言的子集)。
Ajax 是一種用於建立快速動態網頁的技術。
Ajax 是一種在無需重新載入整個網頁的情況下,能夠更新部分網頁的技術。
通過在後台與伺服器進行少量資料交換,Ajax 可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。
傳統的網頁(不使用 Ajax)如果需要更新內容,必須過載整個網頁頁面。
1
第一步:問題定位。1、出現亂碼的原因一般都是由於編碼的不一致導致的。ajax請求接受字元編碼一般都為utf-82、在資料傳輸的過程中,前端get請求或post請求在經過Tomcat和java的一些框架時,都可能會出現編碼不一致的問題導致亂碼,亂碼一般都是中文。2
第二步:問題重現。
1、我們重現的是比較原始的javaweb的servlet開發,status2和springmvc和其它框架原理基本都是一樣的。
2、程式碼實現
2.1 首先搭建一個javaweb專案
編寫servlet關鍵程式碼
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
Map<String,Object> map = new HashMap<String,Object>();
map.put("name", "張三");
map.put("name2", "李四");
map.put("name3", "網二");
JSONObject json = new JSONObject(map);
PrintWriter out = response.getWriter();
out.write(json.toString());
out.close();
}
2.2 web.xml設定
<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>com.test.servlet.ServletController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/servlet.do</url-pattern>
</servlet-mapping>
3
第三步:重現亂碼測試。
1、開啟頁面。
2、單擊按鈕ajax
3、彈出內容亂碼,問題重現
4
第四步:問題解決。
1、解決的思想主要是通過接收資料,傳輸資料之前先使用utf-8編碼解決。
2、具體程式碼如下所示
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/json;charset=utf-8");
// setContentType與setCharacterEncoding的順序不能調換,否則還是無法解決中文亂碼的問題
response.setCharacterEncoding("UTF-8");
Map<String,Object> map = new HashMap<String,Object>();
map.put("name", "張三");
map.put("name2", "李四");
map.put("name3", "網二");
JSONObject json = new JSONObject(map);
PrintWriter out = response.getWriter();
out.write(json.toString());
out.close();
}
3、測試。
3.1 開啟頁面,
3.2點選ajax按鈕如下圖所示。
相關文章