根据我所了解的,解决这个问题的通用方法如下:
var DataRequest = $.ajax({ /* ... */ });
然后在 beforeSend
的 ajax 事件中执行 DataRequest.abort()
。然而,这会导致没有请求被发送。
我想要实现的是:中止任何声明为 DataRequest(例如)的 ajax 操作,只允许最新的请求继续进行。目前我有一个按钮,点击它会开始发起请求并添加 loading spinner。如果我多次点击它,页面上就会出现很多 loading spinner。我该如何避免这种情况?
以下是相关代码:
beforeSend: function() {
$('<div class="grid"></div>')
.attr('id', 'loading')
.hide()
.insertBefore('#output')
.fadeIn();
},
success: function(data) {
$('#loading').hide(function () {
$(this).remove();
});
}