当请求新页面时,如何在Django中取消ajax请求



在我的网页(构建在Django平台上)中,我有一些jQuery,它通过ajax请求请求服务器数据。当我在ajax请求响应之前点击离开页面时,如何防止错误函数执行。

这是我的jQuery调用:

$(document).ready(function() {
 $.ajax( {
    url:'/server/url/',
    type: 'POST',
    data: {some..data},
    success:function(response) { do stuff with response },
    error: function() {alert('error')}
});

当我点击离开页面(到新页面)时,如何防止警报发生?

定义一个全局变量:

var ajaxcancel = false;

不,如果用户关闭窗口,则需要制作true

$(window).bind("beforeunload", function() {
    ajaxcancel = true;
});

并更改ajax错误行以首先检查该变量的值:

...
error: function() {if (!ajaxcancel) alert('error'); }
...

您不能取消已发送的AJAX请求,但您可以做的(我认为这可能适用于您的情况)是在离开发出请求的页面时,您可以发出另一个AJAX请求来取消由初始AJAX请求启动的上一个操作。如果您提出的AJAX请求在服务器端启动了一些昂贵的报告、数据库或算法操作,这可能会对您的情况有所帮助。

至少你可以让服务器知道不要浪费更多的资源,因为用户已经离开了。