首先说明一点,$.get(“”,function(){})请求默认是异步请求(同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。)所以,当发送$.get请求中嵌套$.get请求时,数据并不是同步的,如下面第一段代码,也就是说,下面的代码的执行顺序并不会按照代码的顺序去执行。想要达到预想的想过,就需要将异步请求变成同步请求,如下面第二段代码所示。
$.get("../ordergoods/listByOrderId/" + id, function (r) {
vm.orderGoodsList = r.orderGoodsList;
for(var i=0;i<vm.orderGoodsList.length;i ++){
$.get("../orderuidrel/list/" + id+"/"+vm.orderGoodsList[i].goodsId, function (r) {
var uids = "";
for(var m=0;m<r.orderUidRelList.length;m++){
uids = uids+","+r.orderUidRelList[m].uid;
}
vm.uids = uids;
});
vm.orderGoodsList[i].uid = vm.uids;
}
});
和
$.ajax({ type: "GET", url: "../ordergoods/listByOrderId/" + id, async: false, success: function (r) { vm.orderGoodsList = r.orderGoodsList; for(var i=0;i<vm.orderGoodsList.length;i ++) { $.ajax({ type: "GET", url: "../orderuidrel/list/" + id + "/" + vm.orderGoodsList[i].goodsId, async: false, success: function (r) { var uids= ""; for (var m = 0; m < r.orderUidRelList.length; m++) { if(m==0){ uids = r.orderUidRelList[m].uid; }else{ uids = uids + "," + r.orderUidRelList[m].uid; } } vm.orderGoodsList[i].uid = uids; } }); } } });