关于Ext store数据传递至后台

zhao9302 2010-03-07 06:13:42
小弟在实现数据传递时遇到了困难,向各位大侠请教。

我要实现的功能是
由于我的代码太乱了 我就拿官网的那个例子来说
http://www.extjs.com/deploy/dev/examples/dd/dnd_grid_to_grid.html

有两个grid ,第二个grid 数据是从第一个中拖进来的,

现在我要保存第二个grid的数据到服务器中,我应该如何将数据传递到后台去,

我第二个数据名字是: secondGridStore

我用 的方法是:
Ext.Ajax.request({
url : 'addRecord.action?json=' + secondGridStore,
method : 'POST',
disableCaching : false})
这样是肯定不对的,
但是我用了encode(secondGridStore)会报错,这样传递看起来肯定也错了,
那我应该怎么才能传递数据至后台呢?
})
...全文
330 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin364653705 2010-03-08
  • 打赏
  • 举报
回复
JSONObject object = (JSONObject) JSONSerializer.toJSON(members);//json-lib里面的方法,网上去下,有很多

这里写错了,toJSON,里面应该是toJSON(users);

lin364653705 2010-03-08
  • 打赏
  • 举报
回复
引用 5 楼 zhao9302 的回复:
额 如果是这样传递的话 ,我只需要传递 两个参数就好了
我的JSON格式:


传递一个userId, defaultTime

那我要循环 是    i <secondGridStore.rows.length?
获取的时候 也是 这样  secondGridStore.rows.getAt(i)?

那就照我后面的那个例子,将id和name,改成userID,和defaultTime就可以了,在后台处理,获得的就是这两个值的数组
zhao9302 2010-03-08
  • 打赏
  • 举报
回复
谢谢了,问题解决了~呵呵
lin364653705 2010-03-07
  • 打赏
  • 举报
回复
var usersValue = {
id: '',
name: ''

};
for(var i = 0; i<usersStore.getCount(); i++){
var users= usersStore.getAt(i);
id= mem.get("id");
name= mem.get("name");
usersValue.id += id + ",";
usersValue.name += name + ",";
}

Ext.Ajax.request({
url : 'addRecord.action?users=' + usersValue,
method : 'POST',
disableCaching : false})


在后台呢
String users= request.getParameter(request, "users"); 
JSONObject object = (JSONObject) JSONSerializer.toJSON(members);//json-lib里面的方法,网上去下,有很多
String id[] = object.getString("id").split(","); //ID的数组,其他类似操作就OK

刚才本来已经写好了,结果没网,回复没了,郁闷
zhao9302 2010-03-07
  • 打赏
  • 举报
回复
其实当然 我觉得如果能有一个不需要转化的方法直接将JSON数据传递过去自然是最好的,
直接传递又会遇到一个数据解析的问题。
貌似挺麻烦的
zhao9302 2010-03-07
  • 打赏
  • 举报
回复
额 如果是这样传递的话 ,我只需要传递 两个参数就好了
我的JSON格式:

var secondGridStore = new Ext.data.Store({
reader : new Ext.data.JsonReader({
root : 'rows',
id : 'id'
}, [{
name : 'id',
mapping : 'userId'
}, {
name : 'name',
mapping : 'userName'
}, {
name : 'titleName',
mapping : 'itemTitle'
}, {
name : 'itemId',
mapping : 'itemId'
}, {
name : 'defaultTime',
mapping : 'defaultTime'
}])
});


传递一个userId, defaultTime

那我要循环 是 i<secondGridStore.rows.length?
获取的时候 也是 这样 secondGridStore.rows.getAt(i)?

lin364653705 2010-03-07
  • 打赏
  • 举报
回复
你传递JSON字符串,你是不是也要解析呢??
zhao9302 2010-03-07
  • 打赏
  • 举报
回复
难道只有这样的拼的方法。。这也太无语了?
lin364653705 2010-03-07
  • 打赏
  • 举报
回复
哦,上面写错了,store.你改下名字
lin364653705 2010-03-07
  • 打赏
  • 举报
回复
这样的情况话,你直接在前台就遍历secondGridStore,然后将值拼接起传递到后台,后台直接循环插入就可以了

var sql="";
for (var i = 0; i < secondGridStore.data.length; i++) {
sql +="insert into table(col1,col1) values('" + store.getAt(i).get('COL1') + "','"+store.getAt(i).get('COL2')+"';" + "#"; //直接将SQL拼好,你也可以将值传递,在后台拼
}

Ext.Ajaz.request({
url : 'addRecord.action?sql=' + sql,
method : 'POST',
disableCaching : false})


然后在后台,你获取到sql以后,使用sql.split('#') 获取SQL的数组,执行插入就可以

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧