Я пытаюсь остановить сброс таймера, когда пользователь обновляет страницу. Я не хочу использовать куки или локальное хранилище, я хочу хранить, сколько осталось в базе данных. Я использую Django и Ajax. Я не до конца понимаю, как это сделать, я пытался отправить оставшееся для просмотра количество, используя AJAX POST-запрос, но я получаю, что его None, следовательно, он не сохраняется в базе данных. Я не до конца понимаю, где разместить вызов AJAX в моем JS и как использовать запрос GET AJAX. Как я могу получить значение из базы данных и использовать его в моем таймере, когда пользователь обновит sh страницу?
шаблон. html
const TIME_LIMIT = 30;
let timePassed = 0;
let timeLeft = TIME_LIMIT;
let timerInterval = null;
startTimer()
function startTimer() {
timerInterval = setInterval(() => {
timePassed = timePassed += 1;
timeLeft = TIME_LIMIT - timePassed;
seconds_left = timeLeft/100
document.getElementById("base-timer-label").innerHTML = formatTime( timeLeft);
$.ajax({
type: "POST",
url: server_url+ '/study/attention_view',
data: {'seconds_left' : seconds_left},
success: function () {
console.log('seconds_left:', seconds_left);
}
});
setCircleDasharray();
setRemainingPathColor(timeLeft);
if (timeLeft === 0) {
onTimesUp();
}
}, 1000);
}
function formatTime(time) {
let seconds = time % 60;
if (seconds < 10) {
seconds = `0${seconds}`;
}
return `${seconds}`;
}
}
model.py
class Participant(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True)
seconds_left = models.FloatField(default=0)
view.py
def attention_view(request):
participant = get_object_or_404(Participant, user=request.user)
if request.method == 'POST':
seconds_left = request.POST.get('seconds_left')
participant.seconds_left=seconds_left
participant.save()
seconds_left = participant.seconds_left
return render(request, 'study/AttentionCheck.html', {'seconds_left': seconds_left})