我有一个链接列表,点击时分别执行不同的Ajax调用。

每个Ajax响应都会被指定一个目标,它将被显示。

在处理请求时,链接仍然可以被点击(=进一步的Ajax调用)。

下面的例子有两个目标和四个链接:两个指向DIV#d1,两个指向DIV#d2。

如何确保只发送最后一个请求的响应最终会显示在其目标DIV中?

如果我点击标记为Data1,然后Data2的链接,则必须中止第一个调用,因为Response1可能在Response2之后到达。这个问题似乎意味着我必须跟踪以前对每个目标的请求,所以只要有新的请求,我就可以放弃它们。

我写过这段代码。我想知道你是否认为这是正确的做法。

$(function(){

var register = {};

$(".trigger").on("click", function() {

var target = $(this).attr("data-target");

var url = $(this).attr("href");

if (register[target] == undefined) register[target] = [];

ajaxCall = $.get(url, function(data) { // Ajax request

$("#" + target).html(data);

});

for (a in register[target]) { // Aborts existing ajax requests for this target

register[target][a].abort();

}

register[target] = []; // Empty register for this target

register[target].push(ajaxCall); // Register current ajax request

return false;

});

});

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐