2011-09-30 94 views
0
window.onbeforeunload = function() { 
    return $j.ajax({ 
     url: "/view/action?&recent_tracking_id=" + $recent_tracking_id + "&time_on_page=" + getSeconds() 
    }); 
} 

這個我有什麼,但它返回與[對象的對象]如何在頁面卸載/離開時發送AJAX請求?

我怎麼只執行了AJAX的警告?

注意:當我只是不返回任何東西時,服務器不顯示它正在接收ajax請求。

回答

1

你不需要返回任何東西,只需觸發ajax調用。

window.onbeforeunload = function(e) { 
    e.preventDefault(); 
    $j.ajax({ url: "/view/action?&recent_tracking_id=" + $recent_tracking_id + &time_on_page=" + getSeconds() 
    }); 
} 

如果您正在使用jQuery,你可以嘗試,而不是綁定到.unload()事件。

+0

preventdefault?這將是非常方便,如果這將從onbeforeunload工作,但我無法想象它會.. – GolezTrol

+0

@GolezTrol它不會傷害。它只能在可能的情況下取消。 – scottm

1

onbeforeunload允許您返回一個字符串,該字符串顯示在'您要離開'確認中。如果您不返回任何內容,該頁面將正常退出。在你的情況下,你返回jQuery ajax方法返回的jqXHR對象。

您應該執行Ajax調用並不返回任何內容。

0

爲什麼你將函數的引用返回到全局池?它應該是這樣的:

window.onbeforeunload = function() { 
$j.ajax({ 
    url: "/view/action?&recent_tracking_id=" + $recent_tracking_id + "&time_on_page=" + getSeconds() 
}); 
} 
0

據我所知,onbeforeunload函數只會返回一個警報。這是爲了防止幾年前的惱人的彈出窗口。

我正在建立一個聊天客戶端,我唯一的辦法就是做一個這樣的事情,就是做一個setInterval函數來更新時間戳,然後檢查超時用戶並刪除它們。用戶這種辦法,didnt「入住」一定時間內會從房間的其他用戶仍然登錄被刪除。

不漂亮,還是比較理想,但沒有獲得成功。