我有一个仪表板UI,它使用jQuery选项卡脚本。每个标签通过单独的Ajax请求加载其内容。将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
});
那么,是你成功的功能动态地创建标签,否则标签已经存在?另外,你是使用jQuery UI标签小部件还是其他一些jQuery插件? – Codasaurus 2013-03-26 22:51:33
感谢您的回复!成功功能只是将内容返回到已创建的选项卡中。该选项卡之前创建了以下行:'$(“#tabul”)。append('
您应该在标签之间来回切换时使用Jquery Block UI Plugin(http://www.malsup.com/jquery/block/)。这样,如果前一选项卡的ajax请求正在进行,则用户无法单击其他选项卡。而不是在ajax成功功能上解锁它 – 2013-03-28 23:36:14