2016-07-22 88 views
0

在瀏覽器關閉之前,我使用$(window).bind(「beforeunload」,function(e){})來調用ajax。它實際上正常工作時,我測試我的本地主機。 對於頁面刷新和瀏覽器關閉而言,Ajax調用都是完美的。 但是,當我上傳到在線服務器,它似乎只適用於頁面刷新,並沒有做任何事情的瀏覽器關閉,雖然在調用瀏覽器關閉ajax是我需要的。 這裏是我的代碼:使用beforeunload關閉或重定向頁面之前的Ajax調用()

//before close/reload browser 
$(window).bind("beforeunload", function(e) { 

    $.ajax({ 
    type:"POST", 
     url: "chat_online.php", 
     data:{ job: 'agent_on_off', id:to_id }, 
     success: function(t){ 

     }, 
    });   

}); 

回答

2

嘗試與async:false到ajax參數。它會工作。

$.ajax({ 
    type:"POST", 
     url: "chat_online.php", 
     data:{ job: 'agent_on_off', id:to_id }, 
     async: false, 
     success: function(t){ 

     }, 
    }); 

因爲在本地主機上你沒有一個巨大的延遲,與 你需要指定等待響應,因爲這需要時間 (幾毫秒,但仍然太多時間用於異步服務器任務)

+1

因爲在本地主機上,您沒有很大的延遲,因爲服務器需要指定等待響應,因爲它需要時間(幾ms但異步任務仍需要太多時間)。 (只是解釋更多;)) – AxelH

+0

@AxelH,感謝您的描述性評論。 –