在ajax的使用过程中,经常会用到要同步的情况。
比如要更改数据之前先看这个数据有没有,那么就需要先看 1.有没有 在2.更改数据
1.2都要用ajax去交互数据 所以就必须要同步 因为1是2的条件依据
那么同步很简单 只需要将async 属性改为false 就可以了 重点是返回值的处理 因为1是2的条件 所以1的方法返回值是要做判断
所以呢,要注意 ajax 的返回函数 和 你1条件 方法的返回区别,以下面为例 ,ajax是判断数据存在就返回true 但是在回调函数返回true并不是 方法ExistCode的返回 所以说 应该在ajax外定义变量 回调函数 处理变量 然后 ajax外 返回 方法的返回值。这样
方法ExistCode才会是true
function ExistCode(e)
{
var a=false;
var CodeName=$("#CodeName").val().trim();
$.ajax({
url:'/PeonyTours/Promotion/CheckPromotionCode',
async:false,
type:'post',
data:{"code":CodeName,"id":""},
success:function(result){
if (result.IsExisted) {
ShowMsgBox("This code already exists", "false");
a= true;
}
}
})
return a;
}
如果是异步执行的话 那么ajax 和函数会都回去处理 导致 方法返回a 是false 因为ajax那么对变量a的改动还没执行完毕