ExtJS3 中EXT.encode()处理json的问题及解决方法

本文探讨了在ExtJS3中使用EXT.encode()处理JSON时遇到的问题,特别是关于字符串引号的不一致导致的解析异常。文章指出,EXT.encode()返回的是严格的JSON字符串,要求键值对的引号必须为双引号。举例说明了当键值对的引号不统一(如'id':20141006187027,'remark':"kkk")或值包含额外引号(如'id':'20141006188007','remark':'"kkkkk"')时,可能导致数据库存储异常。" 111483995,10296907,中标麒麟V6下wine安装及运行通达信指南,"['Linux', 'wine', '操作系统', '证券软件', '通达信']

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

encode Mixed o  )  :  String
Shorthand for Ext.util.JSON.encode
Parameters:
  • o : Mixed
    The variable to encode
Returns:
  • String
    The JSON string

返回的是严格json串;

对于下面的情况也可以应用:

1.

	var gradeInit = function() {
		var initRecs = gradeInfoSM.getSelections();
		if (initRecs.length < 1) {
			Ext.Msg.alert('提示', '请选中所需初始化的数据');
			return;
		}
		var personArry = [];
		for (var i = 0; i < initRecs.length; i++) {
			var record = {};
			record.personId = initRecs[i].get('personId');
			record.personName = initRecs[i].get('personName');
			record.id = initRecs[i].get('id');
			record.year = new Date().format("Y");
			personArry.push(record);
		}
		console.info(personArry);
		Ext.Msg.confirm("提示", "您确定初始化数据?", function(btn) {
			if (btn == "yes") {
				Ext.Ajax.request({
					url : pkuhrms.ContextRoot
							+ '路径',
					params : {
						personjsonArry : Ext.util.JSON.encode(personArry)
					},
					success : function(response, options) {
						var json = Ext.decode(response.responseText);
						if (true == json.success) {
							Ext.Msg.alert("提示", json.msg, function() {
										queryFn();
									});
						} else {
							Ext.Msg.alert('提示', json.msg, function() {
										queryFn();
									});
						}

					},
					failure : function(response, options) {
						Ext.Msg.hide();
						Ext.Msg.alert("提示信息", "查询失败,请重试");
					}

				})

			}
		})
	}

对于上面的程序片段“personjsonArry : Ext.util.JSON.encode(personArry)”:后台的接受类型为Object:
<img src="https://img-blog.csdn.net/20140910144938072?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenByeWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
所以后台还得专门的方法来解析
2.

saveJson = "{'id':" + personForm.getForm().findField('id').getValue()
 +",'remark':"+Ext.encode(personForm.getForm().findField('remark').getValue())+"}";

“Ext.encode”可以解决特殊字符的问题。不过输出的结果为:

{'id':20141006187027,'remark':"kkk"},一个是由双引号括起的,一个则没有;

注意:如果json写成这样:

saveJson = "{'id':'" + personForm.getForm().findField('id').getValue()
 +"','remark':'"+Ext.encode(personForm.getForm().findField('remark').getValue())+"'}";
那么对于remark的输出结果:

{'id':'20141006188007','remark':'"kkkkk"'}

数据库每次都会多一个“”;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值