在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值。代码如下:
function modifyMissionSchedule(x,obj) {
var PHONE = getPhone();
var stream = {
"MISSIONID":obj.parent().next("li").attr("id"),
"PHONE":PHONE,
"SCHEDULE":x, //修改后的进度
};
var EncryptData=dataProces(stream);
var check=true;
$.ajax({
url: apiUrl+"modifyMissionSchedule.do?TAG=" + TAG,
type: "POST",
data: EncryptData,
dataType: "json",
cache: false,
success: function(data) {
if(data.CODE=="1"){
getMissionLog();
check=true;
}
else if(data.CODE=="-1"){
check=false;
}
}
});
return check;
}
这样子,该函数的返回值就会无法改变,主要原因是ajax的异步机制。
只要加上一句async:false,问题即可解决。
function modifyMissionSchedule(x,obj) {
var PHONE = getPhone();
var stream = {
"MISSIONID":obj.parent().next("li").attr("id"),
"PHONE":PHONE,
"SCHEDULE":x, //修改后的进度
};
var EncryptData=dataProces(stream);
var check=true;
$.ajax({
url: apiUrl+"modifyMissionSchedule.do?TAG=" + TAG,
type: "POST",
data: EncryptData,
dataType: "json",
cache: false,
async:false,
success: function(data) {
if(data.CODE=="1"){
getMissionLog();
check=true;
}
else if(data.CODE=="-1"){
check=false;
}
}
});
return check;
}