ajax提交表单
1.添加数据
ajax调用用$("#reviewform").serialize()获取表单数据后提交给后台并根据后台传回的结果判断添加成功与否。(当然可以用原来的data:{key1:value1,key2:value2})
提交表单:没有submit按钮,有保存的button(点击事件是ajax异步提交表单)。
<form id="addhdform"> <div class="modal-body"> <div class="input-group el_modellist" role="toolbar"> <span class="el_spans">发现日期:</span> <input class="datainp form-control el_modelinput span4" id="date01" type="text" placeholder="请选择日期" name="danger.findtime" readonly style="background-color: white"> </div> <style> .bodys { padding: 50px 0 0 50px; } .datainp { width: 200px; height: 30px; border: 1px #A5D2EC solid; } .datep { margin-bottom: 40px; line-height: 24px; margin-right: 15px; } </style> <script type="text/javascript"> var cancel = { minDate : '2015-06-16', maxDate : '2017-12-16' } var opts = $.extend({ type : "je", minDate : undefined, maxDate : undefined }, cancel); if (opts.type == "je") { $("#optsdate").jeDate({ isinitVal : true, festival : true, trigger : "click mouseenter focus", isTime : false, ishmsVal : false, minDate : opts.minDate, maxDate : opts.maxDate, format : "YYYY-MM-DD hh:mm", zIndex : 3000, okfun : function(elem, val) { alert(elem) } }) } //实现日期选择联动 var start = { format : 'YYYY-MM-DD', minDate : '2014-06-16 23:59:59', //设定最小日期为当前日期 //festival:true, maxDate : $.nowDate({ DD : 0 }), //最大日期 choosefun : function(elem, datas) { end.minDate = datas; //开始日选好后,重置结束日的最小日期 endDates(); }, okfun : function(elem, datas) { alert(datas) } }; var end = { format : 'YYYY年MM月DD日', minDate : $.nowDate({ DD : 0 }), //设定最小日期为当前日期 //festival:true, maxDate : '2099-06-16 23:59:59', //最大日期 choosefun : function(elem, datas) { start.maxDate = datas; //将结束日的初始值设定为开始日的最大日期 } }; $("#date01").jeDate({ //festival:true, ishmsVal : false, minDate : '1800-07-12 00:00:00', maxDate : $.nowDate({ YYYY : 100 }), format : "YYYY-MM-DD hh:mm:ss", zIndex : 3000, }) function testShow(elem) { $.jeDate(elem, { trigger : false, isinitVal : true, //festival:true, //ishmsVal:false, minDate : '2016-06-16 23:59:59', maxDate : $.nowDate({ DD : 0 }), format : "hh", zIndex : 3000, }) } </script> <script type="text/javascript"> $(document) .ready( function() { $('#reservationtime') .daterangepicker( { singleDatePicker : true,//设置成单日历 timePicker : true, timePickerIncrement : 1, format : 'YYYY-MM-DD h:mm A' }, function( start, end, label) { console .log( start .toISOString(), end .toISOString(), label); }); }); </script> <div class="input-group el_modellist" role="toolbar"> <span class="el_spans">班 次:</span> <select id="className" class="selectpicker form-control" name="danger.classtype" title="请选择"> <option value="">--请选择--</option> <option value="甲班">甲班</option> <option value="乙班">乙班</option> <option value="丙班">丙班</option> </select> </div> <div class="input-group el_modellist" role="toolbar"> <span class="el_spans">发 现 人:</span> <input type="text" class="form-control el_modelinput" id="findPerson" name="danger.findperson" /> </div> <div class="input-group el_modellist" role="toolbar"> <span class="el_spans">检查单位:</span> <select class="selectpicker form-control" name="danger.checkunit" id="fmchechunit" title="请选择"> <option value="">--请选择--</option> <option value="安全小分组">安全小分组</option> <option value="矿领导">矿领导</option> <option value="科领导">科领导</option> <option value="屯兰安监处">屯兰安监处</option> <option value="五人小组">五人小组</option> <option value="省厅">省厅</option> <option value="山西焦煤">山西焦煤</option> <option value="西山煤电">西山煤电</option> <option value="西山煤电安监局">西山煤电安监局</option> </select> </div> <div class="input-group el_modellist" role="toolbar"> <span class="el_spans">地 点:</span> <input id="didian" type="text" class="form-control el_modelinput" name="danger.address" /> </div> <div class="input-group el_modellist" role="toolbar"> <span class="el_spans">隐患内容:</span> <textarea id="dangerneirong" class="form-control texta" rows="10" name="danger.content"></textarea> </div> <div class="input-group el_modellist" role="toolbar"> <span class="el_spans">隐患类型:</span> <select id="dangerType" class="selectpicker form-control" title="请选择" name="danger.type"> <option value="">--请选择--</option> <option value="采煤">采煤</option> <option value="开掘">开掘</option> <option value="机电">机电</option> <option value="运输">运输</option> <option value="通风">通风</option> <option value="地测">地测</option> <option value="其他">其他</option> </select> </div> <div class="input-group el_modellist" role="toolbar"> <span class="el_spans" id="unitSpan">责任单位:</span> <!-- 隐藏域 把ul的内容,提到name=unit 的 hidden input 中 --> <input id="unit" type="hidden" name="danger.unit" /> <ul id="log" class="el_modelinput el_chooseInput log form-control"> <img src="<%=path%>/controls/selectDropTree/smallTriangle.png" class="el_smallTriangle" width="7" /> </ul> <span id="dutyUnit"></span> <ul id="treeDemo2" class="ztree"></ul> </div> <div class="input-group el_modellist" role="toolbar"> <span class="el_spans">隐患级别:</span> <select class="selectpicker form-control" title="请选择" id="bankHigh" name="danger.dangergrade"> <option value="" id="option0">--请选择--</option> <option value="无">无</option> <option value="C级">C级</option> <option value="B级">B级</option> <option value="A级">A级</option> </select> </div> <!-- 安全隐患上报报告内容 --> <input id="reportCon" type="hidden" name="danger.dangerreport" /> <!-- 隐藏域 --> </div> <div class="modal-footer"> <!-- <button type="submit" class="btn btn-primary" id="submitButton">保存</button> --> <button type="button" class="btn btn-primary" id="submitButton" onclick="saveButton()">保存</button> </div> <!--form原来在这里的 --> </form>
提交表单的验证表单以及初始化表单进行提交(先验证(jQuery的validation插件进行验证),验证通过进行ajax序列化表单以及提交数据)
<script type="text/javascript"> function saveButton() { //alert($("#unit").val()); var isNotNull = $("#addhdform").validate({ ignore : [], rules : { "danger.findtime" : "required",//发现日期 "danger.classtype" : { required : true }, "danger.findperson" : "required",//验证文本框的。前边是 name 属性 "danger.checkunit" : { required : true },//验证下拉框的,下拉框中的option 独有一个value 从 0 , 1 ,2 往下排 "danger.address" : "required", "danger.content" : "required", "danger.dangergrade" : { required : true }, "danger.type" : { required : true }, "danger.unit" : "required" }, messages : { "danger.findtime" : { required : "不能为空" },//下边与上边对应 "danger.classtype" : { required : "必须选择" }, "danger.findperson" : { required : "不能为空" }, "danger.checkunit" : { required : "必须选择" }, "danger.address" : { required : "不能为空" }, "danger.content" : { required : "不能为空" }, "danger.dangergrade" : { required : "必须选择" }, "danger.type" : { required : "必须选择" }, "danger.unit" : { required : "责任单位不能为空" } } }); if (isNotNull.form()) { $ .ajax({ url : '${pageContext.request.contextPath}/danger_addDanger.action', data : $("#addhdform").serialize(), type : 'POST', dataType : 'json', async : true, success : function(data) { //弹出是否录入成功 alert(data.result); } }); */ //发现时间 // $("#reservationtime").val(str); //班次 $("#className").val(0);// //发现人 $("#findPerson").val(''); //检查单位 $("#fmchechunit").val(0);// //地点 $("#didian").val(''); //隐患内容 $("#dangerneirong").val(''); //隐患类型 $("#dangerType").val(0);// //隐患级别 $("#bankHigh").val(0);// $("#unit").val(''); }//if的括号 } </script>
上面验证返回的isNotNull是一个JS对象,通过调用var myJSON = JSON.stringify(isNotNull); console.log(myJSON);可以看到其转换为JSON的内容。( 验证通过才会执行ajax函数,如果不通过不会执行ajax函数)。
ajax请求携带的数据可以通过开发者工具查看
data : $("#reviewform").serialize() 表示序列化之后的数据,将表单的name与值取到(注意的是表单不能定义submit按钮)
(类似于与get提交方式的?后面的数据)
![](data:image/png;base64,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)
【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】