我会在 JS fiddle 中执行此操作,但我无法让 POST 回显器工作,所以我将在这里做一个示例。让我们假设someApi
返回“bar”
JS/jQuery
$(function() {
$('button').click(function(event) {
getSomeData();
});
function getSomeData() {
$("div").text("Foo = ");
$.get("someApi", function(i) {
$("div").append(i);
});
};
});
HTML
<div></div>
<button>Click Me</button>
这里可能有一些错别字,但请忽略它们,因为我已经写了一个即时示例。发生的情况<button>
是单击一次,一切正常。调用 AJAX 函数并<div>
在响应到来时附加 。如果我等待响应并再次单击,<div>
则会被覆盖Foo =
然后附加。当用户变得不耐烦并<button>
多次单击并产生多个 AJAX 请求时,就会出现问题。这最终会导致多次附加“bar”。JS / jQuery 中是否有避免向同一个 URL 发送多个请求的功能?我不是说我想要一个async = false
设想; 我知道这会起作用,但也会减慢应用程序的速度。我也知道我可以添加一个 if 循环来检查 bar 是否已被附加。我要的是一种适当的 JS / jQuery.blockMultipleRequest();
类型的东西。