当ajax发送请求后,在等待server端返回的这个过程中,前台会继续执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候请求users/sessions的请求还没有执行完,可能就执行了后面的操作,那么后面就可能出现空值的情况。
当执行当前AJAX的时候会停止执行后面的JS代码,直到AJAX执行完毕后时,才能继续执行后面的JS代码。
false为同步,上面的Ajax请求会将整个浏览器锁死,只有/users/sessions执行结束后,才可以执行后面其它操作。
function flightNo() {
var temp = false;
$.ajax({
"url": "index.do",
"type": "post",
"data": "type=insert",
"dataType": "text",
"success":function (result) {
if (result === "true"){
// 此处代码无作用temp = true;
temp = true;
}else {
// 不做处理
}
},
"error":function () {
// 不做处理
}
})
alert(temp); // 此处将始终为false
return temp;
}
function flightNo() {
var temp = false;
$.ajax({
"url": "index.do",
"type": "post",
"async": false,// 此处为不同点
"data": "type=insert",
"dataType": "text",
"success":function (result) {
if (result === "true"){
// 此处代码无作用temp = true;
temp = true;
}else {
// 不做处理
}
},
"error":function () {
// 不做处理
}
})
alert(temp); // 此处将收到“temp = true;”这句代码的影响
return temp;
}
在使用Ajax获取参数或返回值用作其他脚本使用时,需要设置为同步进行
在Ajax的执行结果不影响(不被使用时)到脚本执行时,可以使用默认的异步提高效率