项目中使用post嵌套,结果出现外层post先执行,内层post后执行。
解决方法:设置全局async
$.ajaxSetup({
async : false
});
$.post(getUrl, {
f: f
}, function(datas) {
if(datas != null) {
var sTabFloor = eval("(" + datas + ")");
$.each(sTabFloor, function(keys, vals) {
sHtml+='<div class="floor"><span>'+vals['c_name']+'</span>';
//默认显示数据
$.post(getFl,{f:vals['c_id']},function(resData){
if(resData!=null){
//解析并追加数据
var sFlH = eval("(" + resData + ")");
$.each(sFlH,function(k,v){
sHtml+="<span οnclick='getDetails('"+v['h_id']+"')'>"+v['h_name']+"</span>";
});
console.log(sHtml);
}
});
s=false;
sHtml+="</div>";
// console.log(sHtml);
});
}
});
$(sHtml).appendTo(".content");
最后,附上网上搜索来的$.ajax请求,如果要嵌套的话,一定要使用这种
$.ajax({
url:url,
type:'post',
data:{'type':b_type,'moneyCount':moneyCount,'shoplen':shoplen},
timeout:15000,
// 请求发送之前(发送请求前可修改XMLHttpRequest对象的函数,如添加自定义HTTP头。)。
beforeSend:function(XMLHttpRequest){
$("#doing").html("正在处理,请稍后···");
},
// 请求成功后的回调函数
success:function(data,textStatus){
var result = JSON.parse(data);
if(result.code == 1){
$('#qr_code').show(1500);
$('#qr_code').attr('src',result.data);
$('.payment_but').hide();
}else{
alert(result.msg);
}
},
// 请求完成后的回调函数 (请求成功或失败之后均调用)
complete:function(XMLHttpRequest,textStatus){
$("#doing").empty();
},
// 请求失败时调用此函数。
error:function(XMLHttpRequest,textStatus,errorThrown){
$("#doing").empty();
}
});