2012-04-12 172 views
3

我有AJAX請求,它從遠程文件獲取數據並顯示在頁面上的div中。當用戶將鼠標懸停在鏈接上時,將調用AJAX並顯示帶數據的div,並且當鼠標移出鏈接時,它會消失。該div立即顯示,但當鼠標移出時,鼠標移出和隱藏div之間會有大約5秒的延遲。中止AJAX請求

我認爲它與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); 
}); 

回答

3

試試這個:

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

    //kill the request 
    xhr.abort() 
+0

我已經分配AJAX調用給一個變量,然後用中止()在hidePopup()函數把它打死了之前隱藏彈出。不幸的是,這並沒有解決問題,並且彈出窗口在消失之前仍然「卡住」至少5-6秒。 – Eleeist 2012-04-12 16:17:09

0

可以終止Ajax請求,使用jxhr對象:

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

是這樣的:

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

//kill the request 
jxhr_object.abort() 
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() 

這不會讓您的瀏覽器凍結。

異步:真實,