#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
части.