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

时间:2012-01-25 15:19:27

标签: jquery ajax django

在我的网页(基于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')}
});

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

2 个答案:

答案 0 :(得分:1)

定义全局变量:

var ajaxcancel = false;

如果用户关闭窗口,则不需要设置true

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

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

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

答案 1 :(得分:-1)

您无法取消已发送的AJAX请求,但您可以执行的操作(因为我认为这可能适用于您的情况)是在离开发出请求的页面时,您可以再次发出取消之前操作的AJAX请求通过最初的AJAX请求。如果你所做的AJAX请求开始在服务器端进行一些昂贵的报告或数据库或算法操作,这可能会有所帮助。

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

相关问题