ajax的异步加载和return的失效
2017-04-27 19:52
225 查看
在开发中,我在做一个很简单的功能,验证码校验并提交表单,在做这个功能时,遇到里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里面,写在外面。
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执行成功后才会被执行。
相关文章推荐
- AJAX中的同步加载与异步加载
- Ajax使用XML异步加载数据
- ThinkCMF中如何实现ajax异步加载
- ajax异步加载原理
- AJAX加载后js失效问题及ASP.NET中UpdatePanel内控件的JS失效的问题
- bootStrap异步加载数据(动态加载数据)一二级菜单点击失效的解决办法
- java jsp 页面下拉框 ajax异步加载数库数据
- javascript中使用ajax异步验证数据库后方法return true时总是返回undefined
- SharePoint 实现ajax异步加载数据的几种方式
- ajax异步加载页面代码
- Ajax加载页面浏览器前进后/退按钮失效的解决方案
- 关于ajax异步加载XML例子
- ECharts3 实现 AJAX异步加载 数据库数据
- Javascript(Ajax)异步加载树型结构的一个样例
- php 爬虫如何爬取ajax异步加载文件
- mvc3中使用unobtrusive时,ajax更新加载页面后验证失效解决方法
- ajax 异步加载
- ajax动态加载js,导致js不执行失效问题颇
- session失效时间设置、过期处理、ajax同步异步请求处理
- c#,jquery easy ui通过ajax实现异步加载tree