我们知道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同步和异步的区别
原文链接:https://www.f2er.com/ajax/162699.html