我们知道ajax是异步的,我们如何通过ajax的返回值来判断下一段代码执行不执行呢,有时ajax没有执行完下一段代码就执行了 如下案例
var forward=false;初始化为false function step1(){ var name = $("#addrInfo").val(); var addrInfo = $("#addrInfo").val() var data={ "name":name, "addrInfo":addrInfo } $.ajax({ async: false,//解决问题 变成同步 url:"clinic/gexingSet.htmls", data:data, dataType:"json", type:"post", cache:false, success:function(result){ if(result==1){ forward=true; }else{ $(".myModal-click").trigger("click"); forward=false; } } }); (function($) { $(document).ready(function() { $(".btn-nextn").click(function() { /*点击下一步*/ var count = 0; /*点击节点标识器*/ var arr = new Array("one","two","three","four","five","six","seven","eight","nine","ten","ele"); for (var i = 0; i <= arr.length - 1; i++) { if (arr[i] == par.id) { count = i; /*id匹配*/ }; }; if(count==0){ step1(); //来控制forward的true还是false } if(forward){ //通过forward来判断alert执行还是不执行 alert(执行); });
上个案例alert走还是不走由forward来决定 而forward是由ajax决定。由于ajax是异步的 所以alert执行有时不受影响,那如何解决呢 我们只需要在step1里的ajax 加上
async: false默认同步 就能解决 只有执行完step1()函数在执行下面的代码。
一定要理解ajax同步和异步的区别 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|