今天工作中遇到一个问题,在写ajax成功返回函数success 时,里面不执行return函数 。
于是网上查了相应的例子,设置了async属性为false。
async属性 :true。则会在ajax传到服务器这段时间里,异步先执行ajax下面的程序。 之后在执行success里的程序。
false。则会先等到success执行完后,后执行ajax下面的程序。
原代码
$.ajax({
type:'post',
url:'purchase_price_check.php?act=check_supplier&getsn='+getvalue,
dataType:'json',
async:false, //同步
success:function(data){ //返回值为1,则该供应商状态非正常
if(data == '1'){
alert('非正常状态供应商,不能提交价格审批');
return false;
}
}
});
设置为同步后,return 函数依旧不执行 。 只好改成下面的程序。 先设置一个布尔型变量为true,在success方法里变值为false。在ajax后面程序里写个if判断,为true则return。
修改后代码
var flag = true;
var getvalue = $('#getvalue').val(); //获取供应商的user_sn
if(getvalue){
$.ajax({
type:'post',
url:'purchase_price_check.php?act=check_supplier&getsn='+getvalue,
dataType:'json',
async:false, //同步
success:function(data){ //返回值为1,则该供应商状态非正常
if(data == '1'){
alert('非正常状态供应商,不能提交价格审批');
flag = false;
}
}
});
}
if(flag != true){
return false;
}
哪位大神遇到过相同问题,return 函数为什么在success中不执行呢?