zoukankan      html  css  js  c++  java
  • Ajax等待返回结果时,弹出一个友好的等待提示

    巧用Ajax的beforeSend 提高用户体验

      jQuery是经常使用的一个开源js框架,其中的$.ajax请求中有一个beforeSend方法,用于在向服务器发送请求前执行一些动作。

    具体可参考jQuery官方文档:http://api.jquery.com/Ajax_Events/

    $.ajax({
        beforeSend: function(){
         // Handle the beforeSend event
        },
        complete: function(){
         // Handle the complete event
        }
        // ......
    }); 

    防止重复数据

      在实际项目开发中,提交表单时常常由于网络或者其原因,用户点击提交按钮误认为自己没有操作成功,进而会重复提交按钮操作次数,如果页面前端代码没有做一些相应的处理,通常会导致多条同样的数据插入数据库,导致脏数据的增加。要避免这种现象,在$.ajax请求中的beforeSend方法中把提交按钮禁用掉,等到Ajax请求执行完毕,在恢复按钮的可用状态。

    举个例子:

    // 提交表单数据到后台处理
    $.ajax({
        type: "post",
        data: studentInfo,
        contentType: "application/json",
        url: "/Home/Submit",
        beforeSend: function () {
            // 禁用按钮防止重复提交
            $("#submit").attr({ disabled: "disabled" });
        },
        success: function (data) {
            if (data == "Success") {
                //清空输入框
                clearBox();
            }
        },
        complete: function () {
            $("#submit").removeAttr("disabled");
        },
        error: function (data) {
            console.info("error: " + data.responseText);
        }
    });

    模拟Toast效果

    ajax请求服务器加载数据列表时提示loading(“加载中,请稍后...”)

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

    通过调用一个函数展示有好的动画效果

    <script type="text/javascript">  
      
    function test_ajax(){  
       $.ajax(  
       {  
          type:"GET",//通常会用到两种:GET,POST。默认是:GET  
          url:"a.php",//(默认: 当前页地址) 发送请求的地址  
          dataType:"html",//预期服务器返回的数据类型。  
          beforeSend:beforeSend, //发送请求  
          success:callback, //请求成功  
          error:error,//请求出错   
          complete:complete//请求完成  
       });  
    }  
    function error(XMLHttpRequest, textStatus, errorThrown){  
      // 通常情况下textStatus和errorThown只有其中一个有值   
      $("#showResult").append("<div>请求出错啦!</div>");  
    }  
    function beforeSend(XMLHttpRequest){  
      $("#showResult").append("<div><img src='loading.gif' /><div>");  
    }  
    function complete(XMLHttpRequest, textStatus){  
      $("#showResult").remove();  
    }  
    function callback(msg){  
      $("#showResult").append("<div>请求成功,回传数:"+msg+"<div>");  
    }  
    </script>  
  • 相关阅读:
    第一节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表、验证码表、轮播图表
    Tensorflow 错误:Unknown command line flag 'f'
    Python 多线程总结
    Git 强制拉取覆盖本地所有文件
    Hive常用函数 傻瓜学习笔记 附完整示例
    Linux 删除指定大小(范围)的文件
    Python 操作 HBase —— Trift Trift2 Happybase 安装使用
    梯度消失 梯度爆炸 梯度偏置 梯度饱和 梯度死亡 文献收藏
    Embedding 文献收藏
    深度学习在CTR预估中的应用 文献收藏
  • 原文地址:https://www.cnblogs.com/tg666/p/9517896.html
Copyright © 2011-2022 走看看