Записывать время, проведенное пользователем на странице, и отправлять эти данные в php-файл …?

#php #javascript #ajax

#php #javascript #ajax

Вопрос:

Может ли кто-нибудь помочь мне в записи времени, проведенного пользователем на конкретной странице? Мне также нужно отправить эти данные в PHP-файл, где их нужно будет сохранить в базе данных.

Это то, что у меня есть на данный момент:

 var time = 1;

function timeHere() {
    time = time   1;
    finalTime = time / 10;
}
function sayTime() {
    finalTime = time / 10;
    sendTimeSpent(finalTime);
}
function sendTimeSpent(finalTime) {
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("GET", "/Test/Timer/StoreTime.php?time="   finalTime, true);
    xmlhttp.send();
}
  

Здесь мне не нужен никакой ответ от сервера…

Мне просто нужно отправить данные на сервер…

Комментарии:

1. Что у вас уже есть и где вы застряли?

2. Обязательно ли отправлять данные при выходе пользователя с текущей страницы? В этом случае навигация по вашему веб-сайту может замедлиться, поскольку каждый раз приходится выполнять AJAX-запрос.

3. Я написал этот Java-скрипт, но он не работает… Я не знаю, почему это не работает…

4. @pimvdb Да, когда пользователь закрывает страницу или запрашивает другую… Проще говоря, при выгрузке страницы необходимо отправить общее время, проведенное на странице..

Ответ №1:

Я бы использовал jQuery, но все равно мне не нравится эта идея.

 var startTime = 0;

$(function() {
    startTime = Date.now();
});

$(window).bind('beforeunload', function() {
    $.ajax({async: false, // Necessary, because the closing code has
                          // to be suspended until the ajax succeeds
            url: 'store.php',
            data: {time: Date.now() - startTime},
            success: function(text) {
                // This is executed when the response has been received
                // text is response data
            }
           });
});
  

Комментарии:

1. Используя success параметр, пожалуйста, обратитесь к моему обновленному ответу.

2. Вы не можете привязать событие beforeunload с помощью jQuery.

3. Я поместил оповещение в эту функцию успеха… Я не вижу этого предупреждения при закрытии страницы, означает ли это, что вызов ajax не удался …?

4. @pimvdb Пожалуйста, ознакомьтесь с моим обновленным вопросом… Здесь мне не нужен никакой ответ, просто нужно отправить данные на сервер…

5. @Raviraja: Что вы затем хотите сделать, чтобы проверить, завершено ли это? Вы можете выполнить что угодно в success части.