Проблема с дублированием AJAX запросов
Столкнулся с проблемой при работе с асинхронными JavaScript запросами. При отправке AJAX запроса на PHP скрипт, который добавляет данные в базу, почему-то создается две одинаковые записи вместо одной.
document.addEventListener('DOMContentLoaded', function(){
var request;
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
} else {
request = new ActiveXObject('Microsoft.XMLHTTP');
}
request.onreadystatechange = function() {
if (request.readyState === 4 && request.status === 200) {
console.log(request.responseText);
return;
}
}
var params = 'user_id=' + userData['id'] + '&page_url=' + encodeURIComponent(currentURL) + '&token=' + userData['token'];
request.open('POST', 'https://mysite.com/handlers/save_visit.php?' + params, true);
request.send();
});
PHP скрипт выполняет INSERT в таблицу и возвращает ID новой записи. В консоли вижу правильный ID, но в базе данных оказывается две записи с разницей в несколько миллисекунд. Подозреваю что запрос отправляется несколько раз пока не получит readyState 4. Как это исправить?