码迷,mamicode.com
首页 > 其他好文 > 详细

海康大华安防网络摄像头Onvif、RTSP网络无插件直播流媒体服务解决方案EasyNVR表单重复提交的优化方案

时间:2019-12-10 17:01:39      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:upload   特征   tps   用户   fun   rtsp   操作   onvif   网络请求   

从功能上来说,EasyNVR自身因其界面美观,不仅可以单独作为音视频流媒体业务系统使用(具体功能搜索EasyNVR一定有惊喜!),也可以作为设备端与第三方平台接入使用;从界面来说,简洁,明朗,更加方便用户操作。但是作为一款软件,EasyNVR并不是全能的,在使用过程中因为业务需求不同,客户会有各种需求反馈给我们。在此过程中,我们会针对性会对相关功能进行优化和提升,满足绝大多数用户的需求。

技术图片

EasyNVR表单重复提交问题

最近有用户反映EasyNVR前端对于表单提交这一块,用户体验不是很好。主要问题是表单在提交成功以后,提交按钮依然可以触发。

问题截图:

技术图片

问题分析:

 $.ajax({
     type: "GET",
     url: _url + "/setbaseconfig",
     data: $this.serialize(),
  })

从代码中我们不难看出,EasyNVR前端页面是通过触发Ajax来进行表单提交的。出现上图中的问题主要是由于多次的触发Ajax。因此,要规避这个问题,我们可以通过限定AJax的触发来,完成这项需求。

解决问题:

首先,我们找出,是什么触发这个Ajax事件的。

$(‘#web-config form, #nvr-config form‘).validator().on(‘submit‘, function(e) {
.........
}

通过代码不难看出,都是通过submit来触发Ajax的。

整体的流程无非这两种:

1.点击提交按钮->触发ajax提交数据->提交成功->屏蔽提交按钮防止再次提交;

2.点击提交按钮->触发ajax提交数据->提交失败->保持提交按钮状态供再次提交;

Ajax提供的操作空间还是相当完善的。

我们都知道ajax是执行异步网络请求,我们可以在请求前,请求后,请求动作完成,请求动作成功、请求动作失败等都有对应的函数来进行操作。ajax的这些特征,就更加的方便我们来操作了。

首先我们抛开提交的内容,从提交的过程来说,在EasyNVR配置表单中我们没有只需要注重ajax请求动作的成功和失败;我们主要调用的函数就是success: function、error: function;请求成功后在success中将提交按钮屏蔽起来,如果请求失败,提示出错误原因,保持提交按钮的可以提交的状态。

HTML中的input元素、button元素、option元素等都具有一个disabled属性。当赋予该属性时该元素将变得不可交互。可以用这个属性来屏蔽提交按钮。

 $.ajax({
	type: "GET",
    url: _url + "/setbaseconfig",
    data: $this.serialize(),
 success: function(data) {
         reload();
         $.gritter.add({
             text: ‘配置成功,重启后生效!‘,
             class_name: ‘gritter-info‘
        });
		$this.find("button[type=submit]").prop("disabled", true);
                    },
 error: function(e){
	     console.log(e)
		$this.find("button[type=submit]").prop("disabled", false);

   }

技术图片

海康大华安防网络摄像头Onvif、RTSP网络无插件直播流媒体服务解决方案EasyNVR表单重复提交的优化方案

标签:upload   特征   tps   用户   fun   rtsp   操作   onvif   网络请求   

原文地址:https://www.cnblogs.com/EasyNVR/p/12017278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!