ajax的异步加载和return的失效
来源:互联网 发布:人工智能对社会 编辑:程序博客网 时间:2024/06/08 01:28
在开发中,我在做一个很简单的功能,验证码校验并提交表单,在做这个功能时,遇到里ajax的这2个问题:return无效,执行顺序不符合我的预期。以前也遇到类似的问题,但是解决之后没去总结,也没去细究其中的原理和原因。这样没有起到积累知识的作用,再次遇到不一定能记起,今天总结记录一下。
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。
ajax作为前端和后台交互的一种方式,使用起来很方便。但是ajax是异步加载的,所以在js里的执行顺序,不一定按照你想的那样顺序去执行。还有ajax里success里的return方法,也不一定如你所希望的那样结束方法,返回你需要的值。只要理解ajax的异步加载的特性,这些问题就很好解决了。还有一点,ajax最大的特性是页面无刷新获取服务器数据,用它做不了页面跳转,可以用window.location.href跳转。
两个问题的原因其实是用一个,那就是ajax是异步的。
return无效。我当时写的是一个alidator校验手机验证码,验证通过则进行下面的表单提交,结果它并没有验证,直接去提交表单了。解决方法很简单,返回不要写在ajax里面,写在外面。
function register(){if(validator()){$("#register").submit();}}//改进前function validator(){var code = $("#code").val();$.ajax({ type: "post", url: "/register/validatorm", data: {code:code}, dataType: "text", success: function(data){ if(data.success){ return true; }else{ return false; } }, error: function() { return false; } });}//改进后function validator(){var code = $("#code").val();var flag = false;$.ajax({ type: "post", url: "/register/validatorm", data: {code:code}, dataType: "text", success: function(data){ if(data.success){ flag = true; }else{ flag = false; } }, error: function() { flag = false; } });if(flag){return true;}else{alert("验证码错误");return;}}另一个问题,不按我预期的顺序执行。我当时需要执行2个判断,然后进行业务提交。当时需要写了2个ajax,结果执行结果很糟糕,逻辑顺序乱成一团。解决方法依然很简单,ajax嵌套。一个ajax的success里,写另一个ajax,则它一定只会在这个ajax执行成功后才会被执行。
0 0
- ajax的异步加载和return的失效
- jQuery.ajax为什么不能实现return值?+ajax的同步和异步
- 浅谈ajax异步和同步加载的区别
- ajax return false 失效
- jQuery的AJax异步加载片段
- ajax异步加载的小问题
- Ajax的异步和同步
- ajax的同步和异步
- jquery ajax 加载数据的时候异步显示加载动画
- jquery ajax 加载数据的时候异步显示加载动画
- JS return false失效的解决方案;
- bootStrap异步加载数据(动态加载数据)一二级菜单点击失效的解决办法
- jquery ajax 同步异步的执行 return值不能取得的解决方案
- ajax的异步和同步的解决
- ajax 的 async 的同步和 异步
- ajax的同步和异步的区别
- ajax的同步和异步的区别
- 解决ajax异步传输数据,return返回为undefined的问题
- MPMoviePlayerController指定在线视频的开始时间
- 2016蓝桥 剪邮票
- Android 6.0动态权限介绍与处理
- librtmp & rtmpdump开源项目github
- 字符判断
- ajax的异步加载和return的失效
- 算法提高 7-2求arccos值
- MFC找不到控件ID的原因
- 玲珑acm 倍增
- android混淆
- Discuz!字符串裁剪函数cutstr介绍
- 路漫漫其修远兮,吾将上下而求索
- JMeter使用中遇到的问题该如何解决?
- 用navicat premium连接数据库遇到的问题