Выполнение HTTP-запроса на публикацию данных в ThingSpeak через JavaScript работает с перебоями только при публикации времени, проведенного пользователем на веб-сайте. - PullRequest
0 голосов
/ 06 ноября 2019

Публикация в Thingspeak иногда срабатывает только тогда, когда я пытаюсь опубликовать время, проведенное пользователем на веб-сайте с использованием javascript (jquery и ajax). В моем коде у меня есть кнопка, которая при нажатии запускает ту же функцию, которая запускается, когда пользователь выгружается (закрывает вкладку). Когда я запускаю эту функцию, она отлично работает, и время, проведенное на канале thingpeak, отображается правильно.

У меня Macbook Air 2017 с Chrome. Я пробовал Firefox и Safari, и все они ведут себя одинаково. У меня уже есть сайт, размещенный в сети. У меня есть другой HTTP-запрос, который выполняется в той же функции после проблемного запроса.

веб-сайт находится на https://quackduck.github.io/ полный код на https://github.com/quackduck/quackduck.github.io

код, который я использовал, чтобы найти время, потраченное пользователем:

let startDate = new Date();
let elapsedTime = 0;
let data= 0

const focus = function() {
    startDate = new Date();
};

const blur = function() {
    const endDate = new Date();
    const spentTime = endDate.getTime() - startDate.getTime();
    elapsedTime += spentTime;
};

const beforeunload = function() {
    const endDate = new Date();
    const spentTime = endDate.getTime() - startDate.getTime();
    elapsedTime += spentTime;

    // elapsedTime contains the time spent on page in milliseconds
};

window.addEventListener('focus', focus);
window.addEventListener('blur', blur);
window.addEventListener('beforeunload', beforeunload);

код, который я использовал для отправки запросов:

function end () {
thingspeak(elapsedTime/1000);
oldvisitor(elapsedTime/1000);
}
function newvisitor(datatosend) {
let data= datatosend;

$.ajax({
      url: "https://maker.ifttt.com/trigger/newvisitor/with/key/iY46qstJctzVcVh1IGrAFSlTK5WHuPmakgwERnn-WnW",
      type: "POST",
      data: {"value1":data},
      //complete: function(){alert("Success")}
    });
}

function oldvisitor(datatosend) {
let data= datatosend;

$.ajax({

      url: "https://maker.ifttt.com/trigger/oldvisitor/with/key/iY46qstJctzVcVh1IGrAFSlTK5WHuPmakgwERnn-WnW",
      type: "POST",
      data: {"value1":data},
      //complete: function(){alert("Success")}
    });
}

function thingspeak(datatosend) {
let data= datatosend;

$.ajax({

      url: "https://api.thingspeak.com/update?api_key=VVAE3RM6DF2D3L95",
      type: "GET",
      data: {"field1":data},
      //complete: function(){alert("Success")}
    });
}

HTML-код:

<body onload="newvisitor()" onunload="end()" onoffline="offline()" ononline="online()">
<button onclick="end()">click</button>

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

Еще одна вещь, которую я хочу, - иметь запись времени (и, возможно, даже вставить ее на мой сайт!). Большое вам спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...