我有一个仪表板页面,并且正在使用 jQuery 通过一个 ajax 调用来更新每个图形。
如果它使用 async:false 运行 AJAX,那么一切正常,但显然很慢,因为调用是一个接一个地进行的。
当我运行 async:true 时,查询会执行,但它们都输出到同一个元素并相互覆盖。
如何确保成功和错误函数中的 jQuery 选择器仍然指向它们的原始目标,而不是全部指向最终框?
我的代码:
//update sparklines on dashboard page
$(".convobox7").each(function() {
id = $(this).attr('id');
$("#convobox-7-"+id).prepend("<img src='img/ajax_loader.gif'/>");
$.ajaxQueue({
url: '_ajax/getFunnelReport',
type: "POST",
dataType: "json",
async: true,
data: {funnel:$(this).attr('id'), dimension:'date'},
timeout: 50000,
success: function(json) {
var data = json;
if (data.success=='true') {
$("#convobox-7-"+id).html(data.htmlconv+"<br/><small>Past week</small>");
gebo_peity.init();
}
},
error: function(x, t, m) {
$("#convobox-7-"+id).html("");
}
})
});
注意我在这里使用了 ajaxQueue 插件,但是没有它也会发生同样的事情。