我有一个网页(后端的Django 1.9,Apache服务器),带有一个包含大量数据集和列过滤器的无限分页表。当用户激活一个过滤器(让我们表示 CHOICE 1 ),然后立即改变主意重置过滤器(让我们将其称为 CHOICE 2 ),我想告诉Ajax放弃等待对CHOICE 1的后端响应,然后继续发布并等待CHOICE 2请求。为此,我有以下JS代码:
// AJAX_GET_REQUEST is a global variable
AJAX_GET_REQUEST= $.ajax(
{
type:'GET',
url:"/my_url/",
beforeSend : function()
{
if (AJAX_GET_REQUEST!= null)
AJAX_GET_REQUEST.abort();
},
data:data,
success: function(response)
{
// Do something
}
});
精细。我曾经认为我实现了成功取消不相关请求的目标,但我发现AJAX_GET_REQUEST.abort();
导致Django错误[Errno 10053] An established connection was aborted by the software in your host machine
。有趣的想法是,这不是一个“致命的错误”,因为应用程序没有终止,而是我的分页表加载需要数年。 Django似乎重新激活连接本身并继续处理最后的请求。终于等了很久之后,我在前端看到了正确的结果。如果我删除了AJAX_GET_REQUEST.abort();
行,一切都很好,但我必须等到Django通过无关的请求,直到它继续处理最后一个相关请求。
有什么出路吗?是否可以中止以前的请求,避免这个恼人的10053错误?