情景一:
多个异步请求,伪代码:
Ajax1(); Ajax2(); Ajax3();
这三个Ajax请求并不存在执行顺序,也就是2和3并不会等第一个Ajax请求完成再去执行,而是直接执行如果想要达到顺序执行的效果,可以通过回调函数来完成,伪代码:
$.ajax({
url:"servletURL",
type:"post",//get
data:{},
dataType:"json",
success:function(data){
$.ajax({
url:"servletURL",
type:"post",//get
data:{},
dataType:"json",
success:function(data){
$.ajax({
url:"servletURL",
type:"post",//get
data:{},
dataType:"json",
success:function(data){}
});
}
});
}
});
这样的话,三个异步请求就会按顺序执行。绿->红->蓝。
情景二:
异步之后是普通操作:
var catName = ""; $.post("/item/cat/catName",{catId:data.cid},function(data){ catName = data; },"text"); node.after("<span style='margin-left:10px;'>" + catName + "</span>");
对于上面的JS代码,是没有意义的,也就是说是错误的,原因就在于,位于异步请求下面的代码并不会等待异步请求完成之后再执行,而是会直接执行。
所以想要上面的代码有效,应该这样写:
var catName = ""; $.post("/item/cat/catName",{catId:data.cid},function(data){ catName = data; node.after("<span style='margin-left:10px;'>" + catName + "</span>"); },"text");