Ajax的同步请求和异步请求
Ajax同步需要等待返回结果才能继续,异步不必等待,一般需要监听异步的结果,同步是在一条直线上的队列,异步不在一个队列上 各走各的,可能平时不太注意这个问题,直到我在Ajax请求里面嵌套了一个Ajax请求,并且返回的是一个数组,需要用for来处理,具体:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$.ajax({ url: "../controller/message/message_controller.php", dataType: "json", data: {数据}, cache: false, success: function(data) { for (var i in data) { sh = i; $.ajax({ url: "../controller/user/user_controller.php", dataType: "json", data: { userId: data[sh].send_id, controller: 'getInfo' }, cache: false, success: function(datas) { var html = 代码 $('#list').append(html); } }); } }, error: function(e) { window.location.href="slide.html"; } }); |
执行之后发现,最后添加的html代码只有返回数组的最后一个值,数量是数组的长度,使用断点调试发现直接跳过了第二个Ajax函数,把第二个Ajax函数放到了其他队列上执行,所以导致了这个问题,把第二个函数加上async: false, 使它成为同步就可以了。