js请求后台数据是常用的技术,form表单提交数据时可以用jquery的插件ajaxSubmit,这个插件很不错,我一直在用,因为后台很多地方都是直接写form表单提交的,但是原生的form表单提交总是给人的体验太差,然后每次手动写ajax又显得太过麻烦,程序就是为了解决麻烦而开发的,所以我找到了ajaxSubmit这个插件,可以轻松实现form表单自动ajax提交,本次演示结合了layer插件。
核心代码如下,options是ajaxSubmit的配置,如果直接把option设置为function函数,则默认是进入option的success。
其他的逻辑封装省略X行:
var options = { beforeSubmit:function () { layer.msg('数据处理中,请勿关闭...',{time:20000,icon:6}) }, success:function(res) { res = isJSON(res)? $.parseJSON(res) : res; layer.msg(res.msg, { time: res.code == 0 ? 1000 : 2000, icon: res.code == 0 ? 6 : 5 }, function() { if (url && res.code == 0) { location.href = url }else if(callBackfun){ return callBackfun(res); } }) } }; $("#"+id).ajaxSubmit(options)
注意:请先引入layer、jquery、jquery.form.js文件
这是jquey.form.js文件:jquery.form.js
补充,在一个表单中用form提交后用button的submit提交用自带的form验证规则需要先通过js验证后用ajax请求,如下:
<form action="你的后端" method="post" id="check-form" > <div class="form-group"> <label for="title">标题:</label> <input type="text" class="form-control" placeholder="请输入标题" id="title" name="title" required maxlength="255"> </div> <div class="form-group"> <label for="content">内容:</label> <textarea class="form-control" rows="6" id="content" placeholder="请输入计划内容" name="content" required minlength="10" maxlength="500"></textarea> </div> <div class="form-group"> <label for="status">状态:</label><br> <div class="btn-group btn-group-toggle" data-toggle="buttons"> <label class="btn btn-outline-primary active"> <input type="radio" name="status" value="0" autocomplete="off" checked> 未开始 </label> <label class="btn btn-outline-info "> <input type="radio" name="status" value="1" autocomplete="off" > 进行中 </label> <label class="btn btn-outline-success"> <input type="radio" name="status" value="2" autocomplete="off"> 已完成 </label> <label class="btn btn-outline-danger"> <input type="radio" name="status" value="-1" autocomplete="off"> 已终止 </label> </div> </div> <div class="form-group"> <label for="remark">额外说明:</label> <textarea class="form-control" rows="3" placeholder="可添加额外的备注" id="remark" name="remark" maxlength="255"></textarea> </div> <div class="text-center"> <button type="button" onclick="validateAndSubmit()" class="btn btn-primary mr-2">提交</button> <a href="index.html" class="btn btn-secondary mr-2">返回</a> </div> </form> <script> function validateAndSubmit() { var form = document.getElementById('check-form'); //先验证表单,然后通过了就form_submit提交,这个是自己封装的ajax提交 if (form.checkValidity()) { form_submit(); } else { form.reportValidity(); } } </script>