• 巧用Ajax的beforeSend 提高用户体验


    jQuery是经常使用的一个开源js框架,其中的$.ajax请求中有一个beforeSend方法,用于在向服务器发送请求前执行一些动作。
    具体可参考jQuery官方文档:http://api.jquery.com/Ajax_Events/

    1 $.ajax({
    2     beforeSend: function(){
    3      // Handle the beforeSend event
    4     },
    5     complete: function(){
    6      // Handle the complete event
    7     }
    8     // ......
    9 });

    防止重复数据

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

    举个例子:

     1 // 提交表单数据到后台处理
     2 $.ajax({
     3     type: "post",
     4     data: studentInfo,
     5     contentType: "application/json",
     6     url: "/Home/Submit",
     7     beforeSend: function () {
     8         // 禁用按钮防止重复提交
     9         $("#submit").attr({ disabled: "disabled" });
    10     },
    11     success: function (data) {
    12         if (data == "Success") {
    13             //清空输入框
    14             clearBox();
    15         }
    16     },
    17     complete: function () {
    18         $("#submit").removeAttr("disabled");
    19     },
    20     error: function (data) {
    21         console.info("error: " + data.responseText);
    22     }
    23 });

    模拟Toast效果

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

     1 $.ajax({
     2     type: "post",
     3     contentType: "application/json",
     4     url: "/Home/GetList",
     5     beforeSend: function () {
     6         $("loading").show();
     7     },
     8     success: function (data) {
     9         if (data == "Success") {
    10             // ...
    11         }
    12     },
    13     complete: function () {
    14         $("loading").hide();
    15     },
    16     error: function (data) {
    17         console.info("error: " + data.responseText);
    18     }
    19 });
  • 相关阅读:
    hadoop hdfs基本命令的java编码实现
    三维空间旋转和Three.JS中的实现
    Talk about VR
    Keras bug in model.predict
    How to compile tensorflow on CentOS
    熵(Entropy),交叉熵(Cross-Entropy),KL-松散度(KL Divergence)
    Two kinds of item classification model architecture
    Three failed attempts of handling non-sequential data
    How to setup Tensorflow inception-v3 model on Windows
    (译)三维空间中的几种坐标系
  • 原文地址:https://www.cnblogs.com/front-end-develop/p/8256853.html
Copyright © 2020-2023  润新知