我们知道 ajax 可以发送异步请求,但是有时候发送异步请求时会出现意想不到的错误,今天我来分析一下这个问题;
首先需要引入 jQuery.js ,看下面代码
$(function(){
$("#btn").click(function(){
$.ajax({
type:"POST",
dataType:"text",
url:"login/login.do",
data:"name=tom",
success:function(mess){
if (mess == "true") {
alert("服务端响应完毕!");
}
},
error:function(){
alert("出错了!");
}
});
alert("发送异步请求完毕!");
});
});
这段代码执行时,会先执行 "发送异步请求完毕!" 然后才执行 "服务端响应完毕!" ,这显然有问题,服务端都没有处理完,请求已经完成了,
相当于服务端处理数据太迟了,所以,有时候我们也需要 ajax 发送同步请求,就不会出现这样的问题了,如下面代码:
$(function(){
$("#btn").click(function(){
$.ajax({
type:"POST",
dataType:"text",
url:"login/login.do",
data:"name=tom",
async:false,
success:function(mess){
if (mess == "true") {
alert("服务端响应完毕!");
}
},
error:function(){
alert("出错了!");
}
});
alert("发送异步请求完毕!");
});
});
加上 async:false, 发送的是同步请求,这样就会等到服务端处理完数据之后,在结束请求;
很多时候 ajax 都发送异步请求,有时候难免会出现这样的错误,只要让其发送同步请求就不会出现了.