ajax用beforeSend自定义请求过程中客户端事件,提高用户体验

本文为博主原创,未经允许不得转载:

在应用ajax的过程中,当我们再前台提交请求的时候,如果服务端响应事件比较长,就会导致需要等很长时间在前台才能接受到服务端返回的

响应结果,往往会导致用户重复点击按钮,进行重复请求,如何可以避免这种情况发生,ajax提供了一个beforeSend属性,用这个既可以避免这种

情况发生。

用这个属性可以定义客户端向服务端请求过程中的事件,比如在请求过程中禁用请求按钮的属性,或定义请求加载状态等,

实现的代码如下:

function exportData(){
            $.ajax({
                type: "post",
                cache: false,
                async: true,
                data: {
                    "name":$("#cameraName").val(),
                    "createTime":$("#createTime").val(),
                    "lastTime":$("#lastTime").val()
                },
                beforeSend: function () {
                    //此处定义并调用jquery-confirm的加载层事件
                    obj = jqconfirmTip(‘正在响应请求,请稍候...‘,‘fa fa-spinner fa-spin‘);
                    return true;
                },
                dataType: ‘json‘,
                url: "exportDetail?rnd=" + Math.random(),
                success: function (a) {
                    if (a.resultCode == "SUCCESS") {
                        obj.close();  //关闭加载层
                    } else {
                        alert("导出失败");
                        obj.close();
                    }
                },
                error: function (msg) {
                    alert("请求失败");
                    obj.close();
                }
            });
        }

//jquery-confirm插件,需要引入jquery-confirm.js    (该方法可以直接调用)
function jqconfirmTip(title, icon) {
    var obj = $.confirm({
        backgroundDismiss : false,
        content : false,
        icon : icon,
        title : title,
        // autoClose : ‘confirm|10000‘,
        animation : ‘scaleY‘,
        closeIcon : false,
        columnClass : ‘col-md-4 col-md-offset-4‘,// col-md-6 col-md-offset-3
        confirmButton : false,
        cancelButton : false,
        theme : ‘black‘
    });
    return obj;
}
        

效果如图:

上述例子中的应用根据服务端返回的结果类型,去关闭该加载层。

同时ajax也提供了请求完成后回调函数 (请求成功或失败之后均调用)的属性,该属性为:complete,可在此处定义回调事件,关闭或停止beforeSend处定义的事件

示例如下:

$.ajax({
    type: "post",
    contentType: "application/json",
    url: "/userList",
    beforeSend: function () {
        $("loading").show();
    },
    success: function (data) {
        if (data == "Success") {
            // ...
        }
    },
    complete: function () {
        $("loading").hide();
    },
    error: function (data) {
          $("loading").hide();
    }
});

时间: 2024-12-16 07:02:34

ajax用beforeSend自定义请求过程中客户端事件,提高用户体验的相关文章

3、在Ajax于Java的交互过程中,加入加载图片

1.在Ajax于Java的交互过程中,加入加载图片 1.1 html代码 <body> <button id="mybtn">点击</button> <div id="myAjax"> <img src="./img/load2.jpg" id="myimg"> </div> <!-- 模拟等待的图片 --> </body> 1.2

JS请求服务器,并返回信息,请求过程中不需要跳转页面

js请求服务器,并返回信息,请求过程中不需要跳转页面 这个可以通过jQuery框架轻松实现,jQuery中包含多种ajax的请求方式,详细可以参考下对应 的API. 你上面定义的按钮类型是submit,如果是在form当中,将会自动提交当前form表单,建议,如果可能的话将其修改为button类型. 下面给出通过jQuery的$.post方式,异步获取服务器的JSON数据. 功能代码: <script type="text/javascript"> $(function()

Ajax请求过程中显示“进度”的简单实现

Ajax在Web应用中使用得越来越频繁.在进行Ajax调用过程中一般都具有这样的做法:显示一个GIF图片动画表明后台正在工作,同时阻止用户操作本页面(比如Ajax请求通过某个按钮触发,用户不能频繁点击该按钮产生多个并发Ajax请求):调用完成后,图片消失,当前页面运行重新编辑.以下图为例,页面中通过一个Load链接以Ajax请求的方式加载数据(左).当用户点击该链接之后,Ajax请求开始,GIF图片显示“Loading“状态,同时当前页面被“罩住”防止用户继续点击Load按钮(中):Ajax请求

统一处理jquery ajax请求过程中的异常错误信息的机制

当jQuery ajax向服务器发送请求,服务器发生异常,比如:400.403.404.500等异常,服务器将异常响应给客户端,此时的ajax可以获取异常信息并进行处理,但此时我们一般是跳转到与异常编码对应的异常页面,对异常集中展现与处理. 首先,发送ajax请求: $.ajax({ type: ‘POST’, url: url, data: data, success: success, dataType: dataType }); 然后,服务发生异常,将对应的异常编码响应给客户端: resp

ajax请求过程中下载文件在火狐下的兼容问题

项目中碰到的问题,记录如下. 需求很简单,点击一个文件链接下载该文件,同时向后台发送请求.需求很常见,用户点击下载后通常要进行下载量的统计,统计的话可以利用 script标签 或者 img标签(图片ping) 的跨域能力,将它们的 src 属性指向统计地址,但是这次用了 ajax 进行统计,遂出现了这个问题. demo 代码如下: 复制代码<a id="a" href="http://c758482.r82.cf2.rackcdn.com/Sublime Text 2.

解决https 请求过程中SSL问题

最近一个项目中用到了https的请求,在实际调用过程中发现之前的http方法不支持https,调用一直报错. 查询了一下,添加几行代码解决问题. public string HttpPost(string Url, string postDataStr, string useragent = null)        {            ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, s

SQL TRACE过程中的事件号详细解释

我们定位数据库性能问题时经常会用到Trace跟踪,下面列举了一下Trace跟踪事件号的含义,方便查看 下表列出了可以在跟踪中添加或删除的事件. 事件号 事件名称 说明 0-9 保留 保留 10 RPC:Completed 在完成了远程过程调用 (RPC) 时发生. 11 RPC:Starting 在启动了 RPC 时发生. 12 SQL:BatchCompleted 在完成了 Transact-SQL 批处理时发生. 13 SQL:BatchStarting 在启动了 Transact-SQL

思科IOS中改善CLI的用户体验

改善CLI的用户体验   序号 命令行编辑按键序列 说明 1 Tab 补全命令或者关键字 2 Ctrl + A 移动光标至命令行的起始位置 3 Ctrl + E 移动光标至命令行的结束位置 4 Backspace 删除光标左侧的一个字符 5 Ctrl + U 删除一行 6 Ctrl + Shift + 6 运行用户终止IOS进程(例如ping或者traceroute) 7 Ctrl + C 放弃当前命令并推出配置模式 8 Ctrl + Z 推出配置模式并返回EXEC提示符 Switch#term

HTTP(GET/POST)请求过程中的编码问题

以下内容为转帖内容,很好. 一.问题:    编码问题是JAVA初学者在web开发过程中经常会遇到问题,网上也有大量相关的文章介绍,但其中很多文章并没有对URL中使用了中文等非ASCII的字 符造成服务器后台程序解析出现乱码的问题作出准确的解释和说明.本文将详细介绍由于在URL中使用了中文等非ASCII的字符造成乱码的问题. 1.在URL中中文字符通常出现在以下两个地方:(1).Query String中的参数值,比如http://search.china.alibaba.com/search/