Обновление базы данных AJAX при выходе из браузера - PullRequest
1 голос
/ 15 ноября 2010

У меня есть база данных с полем «статус», по умолчанию 0 в автономном режиме и 1 в онлайн. Мне было интересно, если кто-нибудь знает способ обновления базы данных в случае закрытия браузера (установите 1 в 0). Было предложено использовать разгрузку тела и указать AJAX, но я не знаю, как это сделать ... ПОЖАЛУЙСТА, помогите, спасибо ...

Ответы [ 2 ]

2 голосов
/ 06 июня 2014

Вот простое решение для события закрытия браузера. Я столкнулся с проблемой с событиями onunload и beforeonunload. Он будет срабатывать при закрытии браузера, закрытии вкладки, любом нажатии ссылки, изменении URL. Поэтому я настроил свой код так:

 <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>
0 голосов
/ 15 ноября 2010

Писквор мертв.Не существует надежного способа узнать, когда пользователь фактически покидает ваш сайт, например, чтобы перейти на 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();">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...