3

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

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

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

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

$(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);
});
4

3 回答 3

3

尝试这个:

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

    //kill the request
    xhr.abort()
于 2012-04-12T11:54:29.207 回答
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()
于 2012-04-12T11:52:00.093 回答
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()

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

异步:真,

于 2014-04-13T11:41:07.433 回答