视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
使用jquery+ajaxform+springboot如何实现数据更新
2020-11-27 19:38:33 责编:小采
文档
这篇文章主要介绍了jquery+ajaxform+springboot控件实现数据更新操作,使用jquery的ajaxform插件是一个比较不错的选择。具体实现工程大家参考下本文

应用背景

使用springboot架构在如下图所示的界面布局中,实现数据的保存或者更新,务必需要提交到后台,如何进行成功或失败的提示呢?如果使用传统的springmvc的模式,势必要传一个页面给前端,这个页面仅仅是提示操作是否成功了!提示之后还得更新一下数据,就好比我们浏览某些网站的时候给出的一些提示 操作成功,5秒后返回 。

比较傻,客户体验也比较差劲。

改造历程

使用ajax能否解决上述的问题呢?

答案是肯定的,点击保存之后,一个ajax请求到后台,使用ResponseBody标签,返回的仅仅是数据。然后根据返回的数据给出相应的提示信息就可以了。

传统的ajax请求数据,需要将form里面的数据重组,全部放到我们的请求体里面。如下代码所示:

$.ajax({
 type: 'POST',
 url: url,
 data: data,
 success: success,
 dataType: dataType
});

如果,我提交的form数据比较多的话,那么data就相对比较庞大了。代码比较臃肿。同时,form表单也丧失了其存在的意义了。

有没有一种比较优雅的方式实现form表单的ajax提交呢?当然。

jquery的ajaxform插件是一个比较不错的选择。

实现过程

第一步。当然是引入我们强大的插件了。

<script src="static/assets/js/jquery.form.min.js"></script>

该js下载,我提供一下github的地址吧: https://github.com/jquery-form/form 。

第二步。在我们想要发送请求的地方进行ajax+form请求的发送。

function insert() {
 var options = {
 // target: '#output1', // 用服务器返回的数据 更新 id为output1的内容.
 // beforeSubmit: showRequest, // 提交前
 success: showResponse, // 提交后
 //另外的一些属性:
 //url: url // 默认是form的action,如果写的话,会覆盖from的action.
 //type: type // 默认是form的method,如果写的话,会覆盖from的method.('get' or 'post').
 //dataType: null // 'xml', 'script', or 'json' (接受服务端返回的类型.)
 //clearForm: true // 成功提交后,清除所有的表单元素的值.
 resetForm: false // 成功提交后,重置所有的表单元素的值.
 //由于某种原因,提交陷入无限等待之中,timeout参数就是用来请求的时间,
 //当请求大于3秒后,跳出请求.
 //timeout: 3000
 };
 //'ajaxForm' 方式的表单 .
 $('#baseForm').ajaxSubmit(options);
 }

处理一下提交后返回的方法

// 提交后
 function showResponse(responseText, statusText) {
 alert('状态: ' + statusText + '\n 返回的内容是: \n' + responseText);
 
 }

后台实现代码

@RequestMapping("/basicSave")
 @ResponseBody
 public String BasicSave(PointInfo pi){
 if(!pi.getSaddress().equals("")){
 pi.setType("1");
 }else{
 pi.setType("0");
 }
 int newId = pointInfoService.saveorupdate(pi);
 return newId+"";
 }

逻辑自行定义

注意

  • 提交的时候一定要使用ajaxSubmit方法

  • 提交的action,请求方式(post还是get)、dataType(json、xml)等默认都采用的form里面的数据,如果在参数里面进行了修改,那么就会覆盖掉。

  • 后续研究

    关于提示框

    使用alert?我费尽心思用上了bootstrap,你这里搞一个alert出来,简直就是往一盘美味里面吐唾沫。有没有美观一点的提示框?当然,答案是肯定的!

    使用notifications插件来完成提示框的美化

    先上个效果图:

    实现步骤

    1.导入notifications所需js和css

    <script src="static/assets/plugins/notifyjs/dist/notify.min.js"></script>
     <script src="static/assets/plugins/notifications/notify-metro.js"></script>
     <script src="static/assets/plugins/notifications/notifications.js"></script>
     <link href="static/assets/plugins/notifications/notification.css" rel="external nofollow" rel="stylesheet">

    2.调用接口即可

    $.Notification.notify('success','top center', '温馨提示', '保存成功!');

    上面是我整理给大家的,希望今后会对大家有帮助。

    相关文章:

    有关ejsExcel模板使用方法

    React Native中NavigatorIOS组件(详细教程说明)

    在React中有关组件间抽象详细说明

    Vue中datepicker插件无法监听datepicker输入框的值问题

    在Vue中有关datepicker的示例代码

    如何解决网站不登录就无法复制内容的问题

    下载本文
    显示全文
    专题