用get方法传递编辑的数据会出现乱码,解决get乱码的方法就是encodeURI(param),然后在后台转码:
String strJson = new String(request.getParameter("param").getBytes("iso-8859-1"),"utf-8");
java.net.URLDecoder.decode(strJson, "UTF-8");
下面是get方法传参代码:
1、获取Ext.grid.EditorGridPanel的bbar添加保存按钮
1 bbar:new Ext.PagingToolbar({ 2 emptyMsg:"没有数据", 3 displayInfo:true, 4 displayMsg:"目前显示第 {0} - {1} 条,共 {2} 条", 5 store:store, 6 pageSize:20, 7 refreshText:"刷新列表", 8 items:['-', { 9 text:'保存', 10 handler:function(){ 11 var m = store.modified.slice(-1); 12 var jsonArray = []; //定义修改后的JSON对象 13 Ext.each(m, function (item) { 14 jsonArray.push(item.data); 15 }); 16 var strJson = Ext.encode(jsonArray); 17 if (jsonArray.length == 0) { 18 Ext.Msg.alert('提示', '没有对数据进行任何更改!'); 19 return; 20 }else{ 21 Ext.Msg.alert('提示', '保存!'); 22 Ext.Ajax.request({ 23 url: '/s.do/servlet?tg=s&json='+ encodeURI(strJson), 24 success: function (response) { 25 Ext.Msg.alert("提交成功", response.responseText); //必须返回json类型 context.Response.Write("{ success: true, errors:{} }"); 26 }, 27 failure: function (response) { 28 Ext.Msg.alert("提交失败", response.responseText); //必须返回json类型{ success: false, errors:{info: '错误了'} } 29 } 30 }); 31 } 32 } 33 }] 34 })
2、后台解析json
1 String strJson = new String(request.getParameter("json").getBytes("iso-8859-1"),"utf-8"); 2 java.net.URLDecoder.decode(strJson, "UTF-8"); 3 System.out.println(strJson); 4 JSONArray js=JSONArray.fromObject(strJson); 5 JSONObject json = null; 6 Iterator it=js.iterator(); 7 while(it.hasNext()){ 8 json=(JSONObject)it.next(); 9 String nbbm=json.getString("nbbm"); 10 int flag = json.getInt("flag"); 11 }
下面是post方式传参,推荐这种方法,无须转码:
1 bbar:new Ext.PagingToolbar({ 2 emptyMsg:"没有数据", 3 displayInfo:true, 4 displayMsg:"目前显示第 {0} - {1} 条,共 {2} 条", 5 store:store, 6 pageSize:20, 7 refreshText:"刷新列表", 8 items:['-', { 9 text:'保存', 10 handler:function(){ 11 var m = store.modified.slice(-1); 12 var jsonArray = []; //定义修改后的JSON对象 13 Ext.each(m, function (item) {//将修改后的行对象生成json对象 14 jsonArray.push(item.data); 15 }); 16 var strJson = Ext.encode(jsonArray); 17 if (jsonArray.length == 0) { 18 Ext.Msg.alert('提示', '没有对数据进行任何更改!'); 19 return; 20 }else{ 21 Ext.Msg.alert('提示', '保存!'); 22 Ext.Ajax.request({ 23 url: '/servlet/AccountManagement?action=save', 24 success: function (response) { 25 Ext.Msg.alert("提交成功", response.responseText); //必须返回json类型 context.Response.Write("{ success: true, errors:{} }"); 26 }, 27 failure: function (response) { 28 Ext.Msg.alert("提交失败", response.responseText); //必须返回json类型{ success: false, errors:{info: '错误了'} } 29 }, 30 params: { UpdateInfo: Ext.encode(jsonArray)}//参数使用 Ext.encode方法将JSON对象编码成字符串,传递到后台!!!!!! 31 }); 32 } 33 } 34 }] 35 })
后台解析json:
1 String strJson = request.getParameter("UpdateInfo"); 2 System.out.println(strJson); 3 JSONArray js=JSONArray.fromObject(strJson); 4 JSONObject json = null; 5 Iterator it=js.iterator(); 6 while(it.hasNext()){ 7 json=(JSONObject)it.next(); 8 String nbbm=json.getString("nbbm"); 9 int flag = json.getInt("flag"); 10 }