如何在ajaxStart或ajaxSend中中止AJAX请求?

时间:2011-04-04 13:06:20

标签: javascript jquery

我的要求是,我在我的项目中写了很多$ .post方法。 我想在每个请求中检查会话,并根据会话值, 我想处理我的页面。但是我不想修改会话的所有方法($ .post), 所以我想在“ajaxStart或ajaxSend”中检查会话并依赖于 响应我想中止主要的AJAX调用。

我尝试过我的小知识。下面的示例代码不起作用,因为 $ .post是异步的。任何人都可以帮我中止一个AJAX请求 在ajaxStart或ajaxSend状态?

var pp;
link=function(id){
var url="http://localhost/jqueryui/test.php";
    pp=$.post(url,{"id":id},function(data){
        $("#div"+id).html(data);
    });
}
$(function(){
    $("#loading").ajaxStart(function(){
        alert("Hi start");
        $(this).show();
               var url="http://localhost/jqueryui/test.php";
           $.post(url,{"id":99},function(data){//checking the session
            if(data == "close")
            pp.abort();         
            });
    }); 
});

2 个答案:

答案 0 :(得分:1)

请参阅jQuery网站上的beforeSend(jqXHR, settings)。我不知道您使用的是哪个版本的jQuery,但是文档说您可以从false返回beforeSend来取消。

答案 1 :(得分:0)

您可以使用回调中的第二个参数“jqXHR”中止请求:

$( document ).ajaxSend( function( event, jqXHR, ajaxOptions )
{
    jqXHR.abort(); // aborts the ajax request
} );