中止AJAX请求

时间:2012-04-12 11:46:47

标签: jquery ajax

我有AJAX请求,它从远程文件中获取数据并显示在页面上的div中。当用户将鼠标悬停在链接上时,将调用AJAX并显示带数据的div,当鼠标移出链接时,它会消失。 div会立即显示,但是当鼠标移出时,将鼠标移出并隐藏div之间会有大约5秒的延迟。

我认为这与阻止隐藏功能的AJAX请求有关,因为当我删除了AJAX请求时,div立即隐藏。

当鼠标从链接中删除时,我可以做些什么来中止,杀死或忽略AJAX,无论如何都隐藏div?

这是我到目前为止的代码:

$(function(){

var showPopup = function(){
    $.ajax({
        type: "GET",
        url: "/process.cfm",
        data: "id=" + 1,
        success: function(data){
            $(".profilePopup").html(data);

            if ($(data).find(".profileResult").length) {
                var text = $(data).find(".profileResult").html();
                $(".profilePopup").html(text);
            }
        }
    });

    $(".profilePopup").show();
}

var hidePopup = function(){
    $(".profilePopup").hide();
}

$("#username").mouseover(showPopup);
$("#username").mouseout(hidePopup);
});

3 个答案:

答案 0 :(得分:3)

试试这个:

 var xhr = $.ajax({
        type: "POST",
        url: "some.php",
        data: "name=Somename",
        success: function(msg){
           alert( "Data Saved: " + msg );
        }
    });

    //kill the request
    xhr.abort()

答案 1 :(得分:0)

你可以使用jxhr对象中止ajax请求:

http://api.jquery.com/jQuery.ajax/#jqXHR

类似的东西:

var jxhr_object = $.ajax({
    url: "some.php",    
    success: function(){
       do something
    }
});

//kill the request
jxhr_object.abort()

答案 2 :(得分:0)

var xhr = $.ajax({
    type: "GET",
    url: "/process.cfm",
    async: true,
    data: "your data",

    success: function(msg){
       alert( "Data Saved: " + msg );
    }
});

//kill the request
xhr.abort()

这不会让您的浏览器冻结。

async:true,