在项目中,需要用extjs把拼装好的json数据打到后台,原始代码如下:
var datas = [];
for (var i = 0; i < flag; i++) {
var id = 'radiogroup' + i;
var result = Ext.getCmp(id).getChecked()[0].boxLabel;
var data = {};
data["pkg"] = Ext.getCmp('pkg').getValue();
data["storeCode"] = Ext.getCmp(id).value;
data["checkResult"] = result;
datas.push(data);
Ext.Msg.wait('保存中......');
Ext.Ajax.request({
url : path + '/api/check/item/save.do',
params : {
datas : Ext.encode(datas)
},
success : function(response, options) {
Ext.Msg.hide();
Ext.getCmp('editCheckPop').hide();
Ext.Msg.alert('系统提示', '保存成功!');
listPanel.getStore().reload();
}
});
}
后台用Spring MVC接收,代码如下:
@RequestMapping("/save.do")
public @ResponseBody ExtResponse save(@RequestParam String datas) {}
数据可以打到后台,可使了各种中文转码格式,接收到的数据依然乱码,后经多方查阅相关资料发现,extjs的encode对中文支持有问题,那我们用Javascript官方的json操作就好了呗,官方的JSON类也是很强大的。
这里我们需要引入json2.js,下载地址:http://img.jb51.net/jslib/json/json2.js。
引用javascript官方JSON的方式如下:
var datas = [];
for (var i = 0; i < flag; i++) {
var id = 'radiogroup' + i;
var result = Ext.getCmp(id).getChecked()[0].boxLabel;
var data = {};
data["pkg"] = Ext.getCmp('pkg').getValue();
data["storeCode"] = Ext.getCmp(id).value;
data["checkResult"] = result;
datas.push(data);
Ext.Msg.wait('保存中......');
Ext.Ajax.request({
url : path + '/api/check/item/save.do',
params : {
datas : JSON.stringify(datas)
},
success : function(response, options) {
Ext.Msg.hide();
Ext.getCmp('editCheckPop').hide();
Ext.Msg.alert('系统提示', '保存成功!');
listPanel.getStore().reload();
}
});
}
此时我们再在后台加断点,发现接收到的datas的中中文数据正常显示。