Ajax等待返回结果时,弹出一个友好的等待提示

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

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

[html]  view plain  copy
  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请求执行完毕,在恢复按钮的可用状态。

举个例子:

[html]  view plain  copy
  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(“加载中,请稍后...”),

[html]  view plain  copy
  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. });  

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

[html]  view plain  copy
  1. <script type="text/javascript">    
  2.     
  3. function test_ajax(){    
  4.    $.ajax(    
  5.    {    
  6.       type:"GET",//通常会用到两种:GET,POST。默认是:GET    
  7.       url:"a.php",//(默认: 当前页地址) 发送请求的地址    
  8.       dataType:"html",//预期服务器返回的数据类型。    
  9.       beforeSend:beforeSend, //发送请求    
  10.       success:callback, //请求成功    
  11.       error:error,//请求出错     
  12.       complete:complete//请求完成    
  13.    });    
  14. }    
  15. function error(XMLHttpRequest, textStatus, errorThrown){    
  16.   // 通常情况下textStatus和errorThown只有其中一个有值     
  17.   $("#showResult").append("<div>请求出错啦!</div>");    
  18. }    
  19. function beforeSend(XMLHttpRequest){    
  20.   $("#showResult").append("<div><img src='loading.gif' /><div>");    
  21. }    
  22. function complete(XMLHttpRequest, textStatus){    
  23.   $("#showResult").remove();    
  24. }    
  25. function callback(msg){    
  26.   $("#showResult").append("<div>请求成功,回传数:"+msg+"<div>");    
  27. }    
  28. </script>    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值