当我尝试中止以前的jQuery AJAX请求时,我遇到了一种奇怪的行为。
情景:
屏幕截图:Network Monitor: Single Request (image)
当然我想防止多次点击,所以我有一个功能可以中止以前的请求。在下一个例子中,我连续7次快速点击。
在网络监视器中,我可以看到,一旦我执行下一个请求,先前的请求就会被直接取消。按预期工作?似乎是这样,但实际上并非如此。
因为最后一个ACTIVE请求现在需要 20秒才能完成,而不是~1.75s ?
查看屏幕截图:Multiple Requests
错误在哪里?提前谢谢。
JS代码:
var theRequest;
function registerAjaxInterceptor(linkElementSelector, outputTime) {
$('body').on('click', linkElementSelector, function (event) {
event.preventDefault();
var $linkElement = $(this);
var uri = $linkElement.attr('href');
theRequest = $.ajax(
uri,
{
'type': 'post',
'beforeSend': function() {
if(theRequest != null) {
theRequest.abort();
}
},
}
).done(function (result) {
});
});
}
registerAjaxInterceptor('.ajax-link', false);