jquery ajax傳回值亂碼解決方案

來源:互聯網
上載者:User

執行個體解決方案

encodeuri(encodeuri(data))  ///注意兩次編碼!!
$.ajax({
       type: "post",
       url: url,
       data:data,
       contenttype :"application/x-www-form-urlencoded;charset=utf-8",
       cache: false,
       success  : viewajax.handle(this.pdomobj, this.div, url) ,
       error : viewajax.error(this.pdomobj, this.div, url)
    });  


java:

string queryvalue = java.net.urldecoder.decode((string)request.getparameter(querycode),"utf-8") ;


方法二

ajax發送請求時預設的編碼是utf-8,前台與伺服器的編碼要統一這已經是不許再重複了,但即使如此,意外還是發生了;;;;;
網頁特效:    //注意下面的兩次轉碼,在server端也是進行了兩次轉碼才擷取到正常的資料

$("#querybyname").click(function(){
var name = encodeuri(encodeuri($("#qname").val()));
$.ajax({
type:"post",
url:"querybyname.action",
contenttype :"application/x-www-form-urlencoded;charset=utf-8",
data:{
queryname:name
},
success:function(msg){
$("#signwork").html(msg);
}
})
})

server :struts2

string name =getqueryname();
name =java.net.urldecoder.decode(name, "utf-8");
system.out.println("action......bbbb"+name);
string name01=java.net.urldecoder.decode(name, "utf-8");
system.out.println("............cccc"+name01);

此處用了兩次轉碼才擷取到正確的資料,具體原因分析中;
據說還有另外一種簡單的途徑就是設定
tomcat對設定檔server.xml
uriencoding就ok了


最後發現了問題的根源,其實是我的struts2的設定檔出現了一點點問題

在設定檔中就有這樣一條配置資訊

<constant name="struts.i18n.encoding" value="utf-8"></constant>

這個一定要和頁面的編碼一致,如果使用ajax發送請求的話預設的utf-8編碼,但後台struts設定檔卻是GBK,讓我好生鬱悶!!最後在使用常規action提交時也出現了亂碼,才發現是這裡出現了問題。其實如果全部使用utf-8的編碼方式是不會出現亂碼的

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.