我有一個數據庫的字段'狀態',當離線時默認爲0,在線時爲1。我想知道是否有人知道在瀏覽器關閉的情況下更新數據庫的方法(將1設置爲0)。有人建議我使用卸載並指向AJAX,但我不知道該怎麼做...請幫助,謝謝...AJAX更新數據庫在瀏覽器退出
回答
Piskvor已經死了。沒有可靠的方法來確定用戶何時實際離開您的網站,例如,去bored.com--或者如果他們有兩個打開的窗口都在查看您的網站,並且他們決定關閉其中的一個。這就是爲什麼大多數情況下,登錄會話過期並且網站提供「註銷」按鈕 - 要確切知道。
如果你確實想進一步探索這條路,這是爲創建一個javascript函數一樣簡單
function doAjaxThingy(){
var qty = document.getElementById(q).value;
var ajax = getXmlObject();
var url= '/doAjaxThingy.php';
if (ajax.readyState == 4 || ajax.readyState == 0) {
ajax.open("POST", url, true);
ajax.onreadystatechange = function(){
if (ajax.readyState == 4) {
alert(ajax.responseText);
}
};
ajax.send(null);
}
}
function getXmlObject() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if(window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
showError('Status: Cound not create XmlHttpRequest Object. Consider upgrading your browser.','Please Wait');
}
}
,然後讓頁面知道要調用該函數時,它卸載
<body onunload="doAjaxThingy();">
感謝您的建議,我剛剛嘗試過,它看起來好像AJAX可能無法正常工作時從身體onunload調用,因爲它什麼都不做,再次感謝我會繼續嘗試:) – jason 2010-11-16 15:30:19
其實我想我可能已經工作了與您的意見(S))...我會回來後,如果它的工作,因爲我想 - 再次感謝Piskvor和Dutchie432我欣賞它加載:) – jason 2010-11-17 12:42:05
我會好奇,看到你的最終結果!祝你好運。此外,你可能會想再次嘗試使用我忘記包含的getXmlObject函數。 : - / – Dutchie432 2010-11-18 13:27:57
Here is a simple solution for browser close event. I faced some issue with "onunload" and "beforeonunload" events. It will be triggered for browser close, tab close, any link click, URL change. So i customized my code like this.
<script type="text/javascript">
jQuery(document).ready(function() {
var validNavigation = false;
// Attach the event keypress to exclude the F5 refresh
$(document).bind('keypress', function(e) {
if (e.keyCode == 116){
validNavigation = true;
}
});
// Attach the event click for all links in the page
$("a").bind("click", function() {
validNavigation = true;
});
// Attach the event submit for all forms in the page
$("form").bind("submit", function() {
validNavigation = true;
});
// Attach the event click for all inputs in the page
$("input[type=submit]").bind("click", function() {
validNavigation = true;
});
window.onbeforeunload = function() {
if (!validNavigation) {
var status = 'abandoned';
$.ajax({
type: "POST",
url: your action URL,
data: "status=" + status,
success: function(res) {
},
});
}
};
});
</script>
- 1. 在瀏覽器退出時更新數據庫
- 2. Silverlight 3退出瀏覽器更新
- 3. 確認瀏覽器退出/瀏覽器退出技巧
- 4. 退出瀏覽器調用
- 5. 訪問數據庫直播/無需刷新瀏覽器,而AJAX
- 6. AJAX和瀏覽器後退按鈕
- 7. 瀏覽器後退按鈕Ajax
- 8. 確認瀏覽器在GWT中退出
- 9. 在PHP中檢測瀏覽器退出
- 10. 的Android - SQLite數據庫瀏覽器不能正確更新
- 11. 關閉瀏覽器更新數據庫關閉
- 12. 用戶關閉瀏覽器時更新MySQL數據庫
- 13. 圖像在數據庫中更改後未在瀏覽器中更新
- 14. PHP腳本不會在瀏覽器退出時退出
- 15. Chrome瀏覽器 - 檢測瀏覽器退出
- 16. 使用ajax或瀏覽器退出時自動註銷PHP
- 17. AJAX Laravel更新數據庫
- 18. Ajax/PHP:更新數據庫
- 19. 退出黑莓瀏覽器的代碼
- 20. Silverlight退出瀏覽器而不安裝?
- 21. Silverlight退出瀏覽器主機
- 22. Silverlight退出瀏覽器問題
- 23. Mozilla瀏覽器中退出觀察
- 24. IE9確認瀏覽器退出
- 25. Silverlight退出瀏覽器檢查
- 26. PHP,會話和退出瀏覽器
- 27. 清除會話瀏覽器退出php
- 28. 通知當瀏覽器退出
- 29. Silverlight 4退出瀏覽器並升級
- 30. Silverlight退出SharePoint webpart中的瀏覽器
請注意,在窗口關閉之前沒有真正可靠的方法來執行AJAX調用 - 觸發的事件(onbeforeunload和onunload,IIRC)在很短的時間內被強制終止。因此,有些客戶可能無法及時更新數據庫。此外,沒有可靠的方法來確定瀏覽器是否關閉,或只是用戶正在導航到不同的頁面。 – Piskvor 2010-11-15 19:52:48