jQuery动态创建form表单并提交到后台(携带一定的数据进行页面跳转)
今天遇到这么一个需求,携带一个编号一个名字跳转到另一个JSP页面,直接页面跳转(get携带数据)的话不太安全,于是想到到后台转发一下。
- 第一种:直接以表单提交方式的进行
JS代码:
var form = $("<form action='"+contextPath+"/trainacontentType_forwardToAddTraincontent.action"+"' method='post'></form>") form.append("<input type='hidden' name='typeId' value='"+$("#trainContentTypeId").val()+"'>"); $(document.body).append(form); form.submit();
注意上面红色部分的代码,chrome56版本以后修复form提交的bug,form = $('<form></form>')创建好后,要$(document.body).append(form);然后form.submit();
否则会报错: Form submission canceled because the form is not connected
- 第二种:动态创建表单,ajax提交表单
另一种ajax提交的方式不需要上面的 $(document.body).append(form);例如:
//2.如果全部填上就动态封装一个表单,然后提交数据(动态拼装一个表单然后提交) var form = $("<form method='post' action='XXX'></form>") var tr = $("#course2AddTbody").children("tr");//获取到tbody var trainningschemeid = getTrainSchemeId();//培养方案编号 var typenum = $("#trainCourseTypeNum").val();//类别num alert(trainningschemeid+"----"+typenum); for(var i=0,length_1 = tr.length;i<length_1;i++){ var courseid = tr.children("td:eq(0)").find("input").val();//课程编号 var semester = tr.children("td:eq(3)").find("input").val();//学期 form.append("<input type='hidden' name='trainCourse["+i+"].trainningschemeid' value='"+trainningschemeid+"'/>");//培养方案编号 form.append("<input type='hidden' name='trainCourse["+i+"].typenum' value='"+typenum+"'/>");//培养方案编号 form.append("<input type='hidden' name='trainCourse["+i+"].courseid' value='"+courseid+"'/>");//培养方案编号 form.append("<input type='hidden' name='trainCourse["+i+"].typenum' value='"+typenum+"'/>");//培养方案编号 } //提交 $.post("xx",form.serialize(),function () { },'json');
后台代码:(页面中可以用OGNL取Traincontenttype 的属性)
private Traincontenttype traincontenttype; ...get,set..... /** * 转发到增加培训内容界面 * @return */ public String forwardToAddTraincontent() { if(ValidateCheck.isNotNull(typeId)){ try { traincontenttype = traincontenttypeService.getTraincontenttypeById(typeId); } catch (SQLException e) { logger.error("查询培训内容类别出错", e); } } return "toAdd"; }
struts2配置:(红色部分是页面跳转的配置)
<!-- S QLQ 增加的培训类别管理 --> <global-results> <result name="success" type="json"> <param name="root">response</param> </result> </global-results> <action name="trainacontentType_*" method="{1}" class="traincontentTypeAction"> <result name="toAdd">/view/train/addTrainFile.jsp</result> </action> <!-- E QLQ 增加的培训类别管理 -->
参考:http://www.cnblogs.com/hujunzheng/p/5069798.html
【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了