日期:2014-05-16 浏览次数:20342 次
我们在使用Extjs开发系统时,Extjs通过json从后台获取数据,同时保存数据时通过Post方式向服务器发送数据:
Ext.Ajax.request({ url : "/application/controller/field/AddHeaderGroup.action", method : 'POST', params : { displayName:nodeText, queryId : queryId }, success : function(response, opts) { newNode.set("id",response.responseText.replace(/'/g,"")); //console.log(newNode.get('id')); parentNode.appendChild(newNode); } });
这个过程中存在一个不足:数组中的字符串数据中如果有",",服务器端在解析数据时常得不到正确的结果---服务器端只能通过字符串的split(",")函数来分拆字符串。
那要怎么才能解决这个问题呢?
Extjs提供了数组编码:Ext.encode(Array)来解决这个问题。在把数组push到另一个数组中时,使用arr1.push(Ext.encode(arr2)),把编码后的数据push到另一个数组中(可以多层嵌套数组)。然后在服务器端解析每个使用Ext.encode()编码的数组时,都要使用:JSONArray.fromObject(groupList)把字符串还原成一个JSONArray。当然,每一个JSONArray.fromObject要对应一个Ext.encode()。这样就可以相对完美的解决Extjs批量保存数据时字符串中存在“,”造成的问题。