我有一个使用 jQuery 选项卡脚本的仪表板 UI。每个选项卡通过单独的 Ajax 请求加载其内容。
这是我遇到的问题:
- 用户将打开多个选项卡,一个接一个
- 创建每个选项卡并为每个选项卡发出 Ajax 请求
- 要创建的最后一个选项卡当前处于打开状态,一旦请求完成,每个选项卡的内容都会显示在此选项卡上
- 一旦用户单击任何选项卡,内容就会被设置为应有的状态。
基本上,如果用户在最近的选项卡的 Ajax 请求完成之前打开了一个新选项卡,则两个 Ajax 请求的内容都会显示在当前打开的选项卡上,直到用户单击任何选项卡,然后所有内容都会按原样显示。
我尝试设置 Ajax 调用来async: false
解决问题,因为它强制 ajax 请求在允许用户打开另一个选项卡之前完成并加载到当前选项卡上,但是用户反馈是负面的,因为用户认为仪表板冻结(它有)。
我还设置了一个超时函数来加载带有加载 .gif 的选项卡,然后发出async: false
Ajax 请求。用户反馈是相同的,即使使用超时功能,加载 gif 一旦发出 Ajax 请求就会停止它的动画。
Ajax 请求如下所示:
$.ajax ({
url: report,
cache: false,
success: function(html) {
$("#loading").hide();
$("#tabcontent").append('<div id="c'+count+'" class="tabContentContainer">'+html+'</div>');
},
error: function(x, status, error) {
$.ajax ({
url: 'admin/error_notification.php',
type: "POST",
data:{
error: error
}
});
},
async:true
});