氟塑料离心泵www.buybeng.com

jquery教程http://www.software8.co/wzjs/jquery/

ExtJs使用Array向后台发送大量数据

我们在使用Extjs开发系统时,Extjs通过json从后台获取数据,同时保存数据时通过Post方式向服务器发送数据:

[javascript] view plaincopy
  1. Ext.Ajax.request({  
  2.                 url : "/application/controller/field/AddHeaderGroup.action",  
  3.                 method : 'POST',  
  4.                 params : {  
  5.                     displayName:nodeText,  
  6.                     queryId : queryId  
  7.                 },  
  8.                 success : function(response, opts) {  
  9.                     newNode.set("id",response.responseText.replace(/'/g,""));  
  10.                     //console.log(newNode.get('id'));  
  11.                     parentNode.appendChild(newNode);  
  12.                 }  
  13.             });  

有时要在编辑一个完整的grid之后点击“保存”时一次性保存整个grid的内容,Extjs可以通过store的getModifiedRecords和getRemovedRecords方法得到变化的和删除内容。这一般都会使用javascript的数组实现:先把一行数据push到数组中,再把一行数据的数组push到另一个数组中,发送到服务器。服务器端通过字符串解析还原数据内容。

这个过程中存在一个不足:数组中的字符串数据中如果有",",服务器端在解析数据时常得不到正确的结果---服务器端只能通过字符串的split(",")函数来分拆字符串。

那要怎么才能解决这个问题呢?

Extjs提供了数组编码:Ext.encode(Array)来解决这个问题。在把数组push到另一个数组中时,使用arr1.push(Ext.encode(arr2)),把编码后的数据push到另一个数组中(可以多层嵌套数组)。然后在服务器端解析每个使用Ext.encode()编码的数组时,都要使用:JSONArray.fromObject(groupList)把字符串还原成一个JSONArray。当然,每一个JSONArray.fromObject要对应一个Ext.encode()。这样就可以相对完美的解决Extjs批量保存数据时字符串中存在“,”造成的问题。

posted on 2012-10-15 08:34 你爸是李刚 阅读(1132) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2012年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿

随笔档案

文章档案

技术网站

行业网站

搜索

最新评论

阅读排行榜

评论排行榜

站长网 氟塑料离心泵 注塑机 液晶广告机