最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ajax傳輸中文亂碼問題的解決辦法

 更新時間:2016年07月20日 11:35:22   作者:冰西瓜先生  
這篇文章主要介紹了Ajax傳輸中文亂碼問題的解決辦法的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

AJAX簡介

AJAX = Asynchronous JavaScript and XML(異步的 JavaScript 和 XML)。

AJAX 不是新的編程語言,而是一種使用現(xiàn)有標準的新方法。

AJAX 是與服務器交換數(shù)據(jù)并更新部分網(wǎng)頁的藝術(shù),在不重新加載整個頁面的情況下。

ajax傳輸中文亂碼問題描述:

  我是在一個jsp頁面有一個保存按鈕,點擊時會觸發(fā)saveForm()的js函數(shù),在saveForm()函數(shù)里經(jīng)過校驗后,會通過ajax發(fā)送數(shù)據(jù)請求,這樣就不用通過提交表單來傳輸數(shù)據(jù)了,ajax估計就是這樣的好處吧,目前對ajax還不太熟悉。

ajax傳輸亂碼時的代碼:

function saveForm(){
if(document.theformadd.onsubmit()){
disableAllBtn(true);
j$.ajax({
type:"get",
url:"add_form_do.jsp",
data:{
problem_id : j$("#problem_id").val(),
product_id : "<%=product_id%>",
productId : j$("#productId").val(),
depart_id : j$("#depart_id").val(),
fk_busi_id : j$("#fk_busi_id").val(),
fk_type : j$("#fk_type").val(),
fk_source : j$("#fk_source").val(),
fk_info : j$("#fk_info").val(),
fk_name : j$("#fk_name").val(),
fk_bank_name : j$("#fk_bank_name").val(),
fk_bank_acct : j$("#fk_bank_acct").val(),
sk_name : j$("#sk_name").val(),
sk_bank_name : j$("#sk_bank_name").val(),
sk_bank_acct : j$("#sk_bank_acct").val(),
fk_money : j$("#fk_money").val(),
fk_summary : j$("#fk_summary").val(),
fk_date : j$("#fk_date").val(),
input_man : "<%=input_operatorCode%>"
},
success:function(ret){
if(ret == 1) {
sl_alert("保存成功!");
}else{
sl_alert(ret);
}
window.returnValue=true;
window.close();
}
});
}
}

然后我們在add_form_do.jsp中獲取數(shù)據(jù)

<%@ page contentType="text/html; charset=GBK" import="java.math.*,com.enfo.intrust.intrust.vo.*,java.io.*, com.enfo.intrust.web.*,java.util.*,com.enfo.intrust.dao.*,com.enfo.intrust.intrust.*,com.enfo.intrust.tools.*,com.enfo.intrust.project.*" %>
<script type="text/javascript" src="<%=request.getContextPath()%>/ext2.0/ext-base.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/ext2.0/ext-all.js"></script>
<%@ include file="/includes/operator.inc" %>
<%
try{
product_id = Utility.parseInt(Utility.trimNull(request.getParameter("product_id")),product_id);
UnpostwarrantLocal local = EJBFactory.getUnpostwarrant();
Integer problem_id = Utility.parseInt(request.getParameter("problem_id"),new Integer(0));
Integer depart_id = Utility.parseInt(request.getParameter("depart_id"),new Integer(0)); //部門
Integer productId = Utility.parseInt(Utility.trimNull(request.getParameter("productId")),product_id);
String fk_busi_id = Utility.trimNull(request.getParameter("fk_busi_id")); //字典1206 費用
String fk_type = Utility.trimNull(request.getParameter("fk_type")); //付款方式 2103
String fk_source = Utility.trimNull(request.getParameter("fk_source")); //付款依據(jù) 2104
String fk_info = Utility.trimNull(request.getParameter("fk_info")); //票據(jù)號碼
String fk_name = Utility.trimNull(request.getParameter("fk_name")); //付款單位
String fk_bank_name = Utility.trimNull(request.getParameter("fk_bank_name")); //付款銀行名稱
String fk_bank_acct = Utility.trimNull(request.getParameter("fk_bank_acct")); //付款銀行賬號
String sk_name = Utility.trimNull(request.getParameter("sk_name")); //收款單位
String sk_bank_name = Utility.trimNull(request.getParameter("sk_bank_name")); //收款銀行名稱
String sk_bank_acct = Utility.trimNull(request.getParameter("sk_bank_acct")); //收款銀行賬號
BigDecimal fk_money = Utility.parseDecimal(Utility.trimNull(request.getParameter("fk_money")).replaceAll(",",""),new BigDecimal(0)); //金額
String fk_summary = Utility.trimNull(request.getParameter("fk_summary")); //備注
Integer fk_date = Utility.parseInt(request.getParameter("fk_date"),new Integer(Utility.getCurrentDate())); //要求付款日期
local.setProblem_id(problem_id);
//local.setProduct_id(product_id);
local.setProduct_id(productId);
local.setDepart_id(depart_id);
local.setFk_busi_id(fk_busi_id);
local.setFk_type(fk_type);
local.setFk_source(fk_source);
local.setFk_info(fk_info);
local.setFk_name(fk_name);
local.setFk_bank_name(fk_bank_name);
local.setFk_bank_acct(fk_bank_acct);
local.setSk_name(sk_name);
local.setSk_bank_name(sk_bank_name);
local.setSk_bank_acct(sk_bank_acct);
local.setFk_money(fk_money);
local.setFk_summary(fk_summary);
local.setFk_date(fk_date);
local.setInput_man(input_operatorCode);
local.addFinacialcardInfoGuotou();
out.clear();
response.getWriter().write("1");
}catch(Exception e){
out.clear();
response.getWriter().write(e.getMessage());
}
%>

這時候我接受到的數(shù)據(jù)會是中文亂碼,不管傳輸方式是get,還是post都會中文亂碼

解決方案:

  我們可以在傳輸時對數(shù)據(jù)重新編碼,然后在接受數(shù)據(jù)時重新解碼。其實亂碼的問題就是編碼格式?jīng)_突,導致解碼的密鑰對之前格式解析錯誤,導致亂碼。在傳輸時,在需要傳輸中文數(shù)據(jù)前面加一個encodeURI()編碼,例如:encodeURI(j$("#fk_info").val());在接受需要中文數(shù)據(jù)的前面加一個java.net.URLDecoder.decode(value, "UTF-8"),例如
String fk_bank_name = Utility.trimNull(request.getParameter("fk_bank_name")); String trans = java.net.URLDecoder.decode(fk_bank_name, "UTF-8");
具體修改后的全部代碼如下:

修復后ajax傳輸?shù)拇a:

function saveForm(){
if(document.theformadd.onsubmit()){
disableAllBtn(true);
j$.ajax({
type:"get",
url:"add_form_do.jsp",
data:{
problem_id : j$("#problem_id").val(),
product_id : "<%=product_id%>",
productId : j$("#productId").val(),
depart_id : j$("#depart_id").val(),
fk_busi_id : j$("#fk_busi_id").val(),
fk_type : j$("#fk_type").val(),
fk_source : j$("#fk_source").val(),
fk_info : encodeURI(j$("#fk_info").val()),
fk_name : encodeURI(j$("#fk_name").val()),
fk_bank_name : encodeURI(j$("#fk_bank_name").val()),
fk_bank_acct : encodeURI(j$("#fk_bank_acct").val()),
sk_name : encodeURI(j$("#sk_name").val()),
sk_bank_name : encodeURI(j$("#sk_bank_name").val()),
sk_bank_acct : encodeURI(j$("#sk_bank_acct").val()),
fk_money : j$("#fk_money").val(),
fk_summary : encodeURI(j$("#fk_summary").val()),
fk_date : j$("#fk_date").val(),
input_man : "<%=input_operatorCode%>"
},
success:function(ret){
if(ret == 1) {
sl_alert("保存成功!");
}else{
sl_alert(ret);
}
window.returnValue=true;
window.close();
}
});
}
}

修復后add_form_do.jsp中獲取數(shù)據(jù):

<%@ page contentType="text/html; charset=GBK" import="java.math.*,com.enfo.intrust.intrust.vo.*,java.io.*, com.enfo.intrust.web.*,java.util.*,com.enfo.intrust.dao.*,com.enfo.intrust.intrust.*,com.enfo.intrust.tools.*,com.enfo.intrust.project.*" %>
<script type="text/javascript" src="<%=request.getContextPath()%>/ext2.0/ext-base.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/ext2.0/ext-all.js"></script>
<%@ include file="/includes/operator.inc" %>
<%
try{
product_id = Utility.parseInt(Utility.trimNull(request.getParameter("product_id")),product_id);
UnpostwarrantLocal local = EJBFactory.getUnpostwarrant();
Integer problem_id = Utility.parseInt(request.getParameter("problem_id"),new Integer(0));
Integer depart_id = Utility.parseInt(request.getParameter("depart_id"),new Integer(0)); //部門
Integer productId = Utility.parseInt(Utility.trimNull(request.getParameter("productId")),product_id);
String fk_busi_id = Utility.trimNull(request.getParameter("fk_busi_id")); //字典1206 費用
String fk_type = Utility.trimNull(request.getParameter("fk_type")); //付款方式 2103
String fk_source = Utility.trimNull(request.getParameter("fk_source")); //付款依據(jù) 2104
String fk_info = Utility.trimNull(request.getParameter("fk_info")); //票據(jù)號碼
String fk_name = Utility.trimNull(request.getParameter("fk_name")); //付款單位
String fk_bank_name = Utility.trimNull(request.getParameter("fk_bank_name")); //付款銀行名稱
String fk_bank_acct = Utility.trimNull(request.getParameter("fk_bank_acct")); //付款銀行賬號
String sk_name = Utility.trimNull(request.getParameter("sk_name")); //收款單位
String sk_bank_name = Utility.trimNull(request.getParameter("sk_bank_name")); //收款銀行名稱
String sk_bank_acct = Utility.trimNull(request.getParameter("sk_bank_acct")); //收款銀行賬號
BigDecimal fk_money = Utility.parseDecimal(Utility.trimNull(request.getParameter("fk_money")).replaceAll(",",""),new BigDecimal(0)); //金額
String fk_summary = Utility.trimNull(request.getParameter("fk_summary")); //備注
Integer fk_date = Utility.parseInt(request.getParameter("fk_date"),new Integer(Utility.getCurrentDate())); //要求付款日期
local.setProblem_id(problem_id);
//local.setProduct_id(product_id);
local.setProduct_id(productId);
local.setDepart_id(depart_id);
local.setFk_busi_id(fk_busi_id);
local.setFk_type(fk_type);
local.setFk_source(fk_source);
local.setFk_info(java.net.URLDecoder.decode(fk_info, "UTF-8"));
local.setFk_name(java.net.URLDecoder.decode(fk_name, "UTF-8"));
local.setFk_bank_name(java.net.URLDecoder.decode(fk_bank_name, "UTF-8"));
local.setFk_bank_acct(java.net.URLDecoder.decode(fk_bank_acct, "UTF-8"));
local.setSk_name(java.net.URLDecoder.decode(sk_name, "UTF-8"));
local.setSk_bank_name(java.net.URLDecoder.decode(sk_bank_name, "UTF-8"));
local.setSk_bank_acct(java.net.URLDecoder.decode(sk_bank_acct, "UTF-8"));
local.setFk_money(fk_money);
local.setFk_summary(java.net.URLDecoder.decode(fk_summary, "UTF-8"));
local.setFk_date(fk_date);
local.setInput_man(input_operatorCode);
local.addFinacialcardInfoGuotou();
out.clear();
response.getWriter().write("1");
}catch(Exception e){
out.clear();
response.getWriter().write(e.getMessage());
}
%>

注意事項:

  如果是接受數(shù)據(jù)不是jsp頁面,而是Java類的時候,只需要URLDecoder.decode(value, "UTF-8");來解碼,然后導入相應的包。還有傳輸時可能需要兩次編碼encodeURI(encodeURI(j$("#fk_info").val())),具體原因是我們通過request.getParameter()來獲取數(shù)據(jù)時就會進行一次解碼操作,解碼時不變。

以上所述是小編給大家介紹的Ajax傳輸中文亂碼問題的解決辦法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • ajax上傳圖片到PHP并壓縮圖片顯示的方法

    ajax上傳圖片到PHP并壓縮圖片顯示的方法

    這篇文章主要為大家詳細介紹了ajax上傳圖片到PHP并壓縮圖片顯示的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • AjaxUI:滑動條

    AjaxUI:滑動條

    AjaxUI:滑動條...
    2007-02-02
  • Ajax局部刷新應用案例---簡單登錄

    Ajax局部刷新應用案例---簡單登錄

    Ajax局部刷新在之前的文章中也有介紹過,下面以一個登錄的例子為大家介紹下其具體的使用
    2013-12-12
  • 利用ajax+php實現(xiàn)商品價格計算

    利用ajax+php實現(xiàn)商品價格計算

    這篇文章主要為大家詳細介紹了利用ajax+php實現(xiàn)商品價格計算,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • 掌握AJAX

    掌握AJAX

    掌握AJAX...
    2006-09-09
  • JavaScript如何控制Session實現(xiàn)原理及代碼

    JavaScript如何控制Session實現(xiàn)原理及代碼

    看到這個題目,或許有人會提出疑問,JavaScript代表客戶端,而Session代表的是服務器(不知道這樣說大家是否能夠理解)現(xiàn)在就回到了題目所描述的問題寫一個JavaScript方法,使其修改Session,感興趣的朋友可以了解下,或許本文對你學習ajax有所幫助
    2013-02-02
  • Ajax 程序開發(fā)中常見問題

    Ajax 程序開發(fā)中常見問題

    Ajax 程序開發(fā)中常見問題,利用大家快點的找到問題所在,快速解決問題。
    2009-08-08
  • AJAX+Servlet實現(xiàn)的數(shù)據(jù)處理顯示功能示例

    AJAX+Servlet實現(xiàn)的數(shù)據(jù)處理顯示功能示例

    這篇文章主要介紹了AJAX+Servlet實現(xiàn)的數(shù)據(jù)處理顯示功能,結(jié)合實例形式分析了前臺ajax與后臺Servlet生成隨機數(shù)顯示的相關(guān)交互操作技巧,需要的朋友可以參考下
    2018-06-06
  • 聊聊Ajax提交form表單的看法和認識

    聊聊Ajax提交form表單的看法和認識

    Ajax,異步請求,通過在后臺與服務器進行少量數(shù)據(jù)交換,AJAX 可以使網(wǎng)頁實現(xiàn)異步更新。通過本文給大家聊一聊ajax提交form表單的看法和認識,感興趣的朋友一起學習吧
    2016-10-10
  • Ajax常見問題有哪些?

    Ajax常見問題有哪些?

    今天我來說一下經(jīng)常在使用js時遇到的三個問題,網(wǎng)友們也可以給我留言寫上更多的常見問題。
    2011-09-09

最新評論

雷波县| 微山县| 南开区| 塔城市| 海安县| 海盐县| 曲阳县| 云林县| 吴桥县| 常熟市| 方城县| 京山县| 九龙坡区| 林芝县| 中宁县| 乌什县| 玉树县| 高清| 武强县| 无极县| 尼勒克县| 密云县| 聂拉木县| 青海省| 汶川县| 新安县| 扶余县| 广平县| 且末县| 肇庆市| 枞阳县| 阳原县| 永城市| 曲麻莱县| 密山市| 平安县| 岢岚县| 南丰县| 昌江| 巴彦淖尔市| 车险|