错误情景再现:
yes: function (index, layero) {
$('#update_staus').show();
selectedDate = $('input[name=month]').eq(1).val();
layer.close(index);
update_status(selectedDate);
在上面的代码中 会先执行 update_status(selectedDate);。 然后执行
$('#update_staus').show();
selectedDate = $('input[name=month]').eq(1).val();
layer.close(index)。
function update_status(selectedDate){
var save_purchase_ret;
var htmlobj = '<li class="">更新数据到hk明细表:<span id="save_purchase">更新中...</span></li>';
$('#update_staus').append(htmlobj );
var status = save_purchase_data(selectedDate);
if(status === 200){
继续执行 发送ajax 同步 请求
}else{
错误提示!
}
}
function save_purchase_data(selectedDate) {
var data;
// 执行更新账单的操作,例如发送 AJAX 请求
$.ajax({
url: 'xx.com' + selectedDate,
method: 'POST',
async: false,
success: function (res) {
// 处理成功响应
re = JSON.parse(res);
data = res ; //将ajax请求的结果 赋值给 data
}
},
error: function (err) {
// 处理错误
console.log(err);
}
});
}
一、修改的办法:
将所有的 添加标签 弄到ajax success 中去 。 并且将 ajax 重新设计为异步。
$('#updateBillBtn').on('click', function () {
var selectedDate;
layer.open({
title: '更新账单!',
content: $('#datePickerContent').html(),
area: ['300px', 'auto'],
btn: ['确定', '取消'],
yes: function (index, layero) {
$('#update_staus').show();
selectedDate = $('input[name=month]').eq(1).val();
layer.close(index);
update_status(selectedDate);
}
})
});
function update_status(selectedDate){
var save_purchase_ret;
var htmlobj = '<li class="">更新数据到hk明细表:<span id="save_purchase">更新中...</span></li>';
$('#update_staus').append(htmlobj );
save_purchase_data(selectedDate);
}
function save_purchase_data(selectedDate) {
// 执行更新账单的操作,例如发送 AJAX 请求
$.ajax({
url: 'http://xx.com' + selectedDate,
method: 'POST',
// async: false,
success: function (res) {
// 处理成功响应
re = JSON.parse(res);
if(re.code === 200) {
$('#save_purchase').text('更新完成');
var htmlobj = '<li class="layui">更新hk明细表:<span id="save_local_purchase">更新中...</span></li>';
$('#update_staus').append(htmlobj);
save_local_purchase_data(selectedDate);
}
},
error: function (err) {
// 处理错误
console.log(err);
}
});
}
总结
目前还不知道是什么原因造成的, 猜想 是 ajax 异步 同步的请求。
参考链接:Jquery ajax 同步阻塞引起的UI线程阻塞的坑(loading图片显示不出来,layer.load延迟) - 爱码网