天天看點

ajax送出struts亂碼,Jquery+Ajax+struts2+亂碼問題

當Jquery和struts2同時使用時一個巧妙解決亂碼的問題,

struts2有自帶一個Encoding的Filter能解決亂碼問題,當然有中文的時候,form要用post請求。具體配置如下:

這個要struts2 的2.1.8版本才能使用,但是2.1.6也可以使用,但是在web.xml中就要用一下配置才可以

struts2

org.apache.struts2.dispatcher.FilterDispatcher

這個filter-class是官網上不提倡用的。如果struts2的版本是2.1.8的話當然就可以使用官網上推薦用的filter了

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

配置了以上都可以解決掉所有帶中文的post送出,不會出現亂碼。但是如果和ajax一起使用起來:

var url_2 = "/school_class/classGradeAction_validatorName.action?formMap.gradeName="+$("#gradeName").val()+"&formMap.gradeId="+$("#id").val();

$.ajax({

type: "POST",

url: url_2,

async : false,

data: null,

success: function(treeHtml){

msg = treeHtml;

}

});

formMap是struts的Action裡的一個map對象,這樣就會出現亂碼問題了。改用以下方式亂碼問題解決:

var url_2 = "/school_class/classGradeAction_validatorName.action"

var data_2 = {'formMap.gradeName':$("#gradeName").val(),'formMap.gradeId':$("#id").val()};

$.ajax({

type: "POST",

url: url_2,

async : false,

data: data_2,

success: function(treeHtml){

msg = treeHtml;

}

});

背景通過String gradeName =this.formMap.get("gradeName");正常顯示!