自己遇到的两种情况,处理方式都不一样。
一、按条件查询数据库,返回到grid中的store时,请求的条件参数存在中文
var storeCombo = new Ext.data.Store({
singleton: true,
proxy: {
type: 'ajax',
url: 'comboList',
actionMethods: 'post',//这个地方添加一下可以解决
reader: {
type: 'json',
root: 'root'
}
},
fields: ['ACCOUNT_AREA'],
autoLoad: true
});
handler : function() {<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
var myarea =encodeURIComponent(Ext.getCmp('combobox').getRawValue());
var myarea =Ext.getCmp('combobox').getRawValue();<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
storeAnalysis.on('beforeload', function(store, options) {
var new_params = {area : myarea};
Ext.apply(store.proxy.extraParams,new_params);
});
storeAnalysis.load({
params : {
start : 0,
limit : 8
}
二、在button中直接Ext.Ajax的时候,类似的方法不起作用,API中关于Ext.Ajax的一个配置属性中说:
method
: String
默认使用的HTTP请求方式。注意,这个配置项是大小写敏感的,所有字母都应该大写(如果你没有设置这个配置项,但是存在请求参数,那么将会 使用"POST",否则将会使用"GET"。)。
默认是POST。
仍然乱码。解决方法:
js文件中给请求的参数转码两次:
Ext.Ajax.request({
url: 'postFeedback?radio1='+encodeURI(encodeURI(radio1)),
method:'post',
success: function(response) {
Ext.Msg.alert('~~~','提交成功!');
}
同时,后台文件转码一次:
String r1 = URLDecoder.decode(radio1,"UTF-8");
可以破解乱码。