打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
求解:通过Jquery 动态绘制多行表格,应该怎么向后台传递动态表格的value
 求解:通过Jquery 动态绘制多行表格,应该如何向后台传递动态表格的value
query动态实现点击一个按钮添加一组元素,在像后台提交的时候应该如何处理,后台又应该如何接传递归来的value存到数据库,Jquery代码:
<script type="text/javascript">
$(document).ready(function(){
var spotMax = 10;
if($('div.spot').size() >= spotMax) {$(obj).hide();}
$("input#add").click(function(){     addSpot(this, spotMax);
});
});
function addSpot(obj, sm) {
$('div#spots').append(
    '<div class="spot">' +
'xx:    '+
'1:'+
    '<select name="item.vehi_type" ><option>测试</option></select> ' +
'2:'+
    '<select name="item.vehi_class" ><option>000</option></select> ' +
'3:'+
    '<input type="text" name="item.lice_no" /> ' +

'<br/>'+
    '<input type="button" class="remove" value="Delete" /></div>')
.find("input.remove").click(function(){
    $(this).parent().remove();
    $('input#add').show();
});
if($('div.spot').size() >= sm) {$(obj).hide();}
};
</script>
Action代码:
public ActionForward doAdd(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception{
meetingForm myForm = (meetingForm)form ;

myForm.getItem1().setLhno(myForm.getItem().getLhno());
myForm.getItem1().setLhtime(myForm.getItem().getLhtime());
myForm.getItem1().setLhyear(myForm.getItem().getLhyear());
myForm.getItem1().setFlag(myForm.getItem().getFlag());
myForm.getItem1().setVehi_id(new findId().find("vehi_id", "unit_vehi_v"));
myForm.getItem().setMeetingid(new findId().find("meeting_id", "meeting"));

if(!this.shenpiBiz.add(myForm.getItem1())){
super.AddError("errors.user.allready_exists",myForm.getItem1().getName());
return mapping.findForward("add");
}
if (!this.meetingBiz.add(myForm.getItem())){
super.AddError("errors.user.allready_exists",myForm.getItem().getLhmc());

return mapping.findForward("add");
}

new tmp().updateCar(myForm.getItem1().getName(),new tmp().getCar(myForm.getItem1().getName()),new tmp().getVehi_type1(new tmp().getCar(myForm.getItem1().getName()), myForm.getItem1().getName()));

response.sendRedirect("meeting.do?o=toList");
return null;
}
原有需求是每次存入一组信息,要实现效果点击按钮添加多组信息后像后台发起请求,后台接受处理将多组信息存入数据库。

求大神详解。
Jquery 传递值 java
分享到:

------解决方案--------------------
第一种方法,分别创建与页面对应类型的参数数组,比如页面有一个type='text'类型的input标签,name='test',那么就在后台创建一个数据,String[] test; 页面有多少类型的参数传递到后台,后台就创建几个数据,最后后台拼接对象的时候,遍历每个数组,然后获取所有数组的第N个元素拼接为第N个对象
第二种方法,直接创建一个对象数组,但是没测试过,不知道这样可行不可行。你可以试试。
------解决方案--------------------
可以使用json格式
------解决方案--------------------
使用ajax技术,在动态创建完dom元素后,执行ajax请求,向后台传递参数。
根据你的代码,取值如下:
var param = {};
$("div #spots div select,input[type='text']").each(function(){
    param[$(this).attr("name")] = $(this).val();
});

取值之后,param的值{
item.vehi_type:"测试",
item.vehi_class:"001",
item.lice_no:""
}
利用JSON.stringify(param)将param对象转化为json字符串后传递到后台进行处理

------解决方案--------------------
不同框架的方式不一样servlet的取值方式:String[] nameArr = req.getParameterValues("name");
for(nameArr){
//插入一条数据数据库
}
------解决方案--------------------
引用:
@3楼,如果我在动态构建一组元素呢,也就是说我点击了两次构建页面元素按钮使页面有多组相同的元素那应该怎么取值和向后台传递呢,不知道说没说清楚,十分感谢


你每次动态生成的元素最好加上一个标志,比如用自增的数字这样就可以标记和区分了
------解决方案--------------------
引用:
@3楼,如果我在动态构建一组元素呢,也就是说我点击了两次构建页面元素按钮使页面有多组相同的元素那应该怎么取值和向后台传递呢,不知道说没说清楚,十分感谢

不用管你点了多少次,只要标签name值相同就OK啦。
你可以直接在js拼接成json再传到后台
也可以直接在后台用一个数组接受。
PS:比如使用SpringMVC框架,Controller端的接收方法使用一个注解@requestParam("name", required = false) String[] name作为其形参就能接受了。 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
jqgrid 的一些操作 动态增加列 用本地 数据 修改表格
jquery表格动态增删改及取数据绑定数据完整方案
Jquery插件之ajaxForm
12个非常不错的免费HTML后台管理模板
使用JQuery动态添加和删除表格行
11个Javascript树形菜单
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服