extjs4.2.1 Ext.encode中文乱码问题

本文介绍如何解决使用ExtJS向后台发送JSON数据时出现的中文乱码问题。通过对比Extjs内置的Ext.encode与JavaScript原生JSON.stringify方法, 成功解决了数据传输过程中的乱码现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       在项目中,需要用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的中中文数据正常显示。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值