加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 21:07:52 所属栏目:百科 来源:网络整理
导读:巧用Ajax的beforeSend 提高用户体验 jQuery是经常使用的一个开源js框架,其中的$.ajax请求中有一个beforeSend方法,用于在向服务器发送请求前执行一些动作。 具体可参考jquery官方文档:http://api.jquery.com/Ajax_Events/ [html] view plain copy print ?

巧用Ajax的beforeSend 提高用户体验

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

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

[html] view plain copy print ?
  1. $.ajax({
  2. beforeSend:function(){
  3. //HandlethebeforeSendevent
  4. },
  5. complete:function(){
  6. //Handlethecompleteevent
  7. }
  8. //......
  9. });

防止重复数据

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

举个例子:

[html] view plain copy print ?
  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 print ?
  1. $.ajax({
  2. type:"post",
  3. url:"/Home/GetList",
  4. beforeSend:function(){
  5. $("loading").show();
  6. },
  7. success:function(data){
  8. if(data=="Success"){
  9. //...
  10. }
  11. },
  12. complete:function(){
  13. $("loading").hide();
  14. },
  15. error:function(data){
  16. console.info("error:"+data.responseText);
  17. }
  18. });

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

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





事件的顺序如下:
ajaxStart全局事件
开始新的Ajax请求,并且此时没有其他ajax请求正在进行。
beforeSend局部事件
当一个Ajax请求开始时触发。如果需要,你可以在这里设置XHR对象。
ajaxSend请求开始前触发的全局事件
success请求成功时触发。即服务器没有返回错误,返回的数据也没有错误。
ajaxSuccess全局的请求成功
error仅当发生错误时触发。你无法同时执行success和error两个回调函数。
ajaxError全局的发生错误时触发
complete不管你请求成功还是失败,即便是同步请求,你都能在请求完成时触发这个事件。
ajaxComplete全局的请求完成时触发
ajaxStop当没有Ajax正在进行中的时候,触发。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读