Я интегрировал Youtube iFrame API в custom_post_type
«видео» для воспроизведения видео на веб-сайте Wordpress. Теперь я хочу рассчитать и запросить прогресс в базе данных для каждого пользователя, просматривающего видео.
Допустим, он просмотрел 8 минут из 10 минут видео и прекратил воспроизведение, которое будет составлять 80%, на следующем шаге нужно запросить progress
, включая post_id
и category_id
и user_id
. и сохраняется в БД.
Я не могу получить доступ к ответу ajax data
на результаты запроса к базе данных.
Имя переменной javascript - time
Ниже код JS:
function CheckVideo() {
var ct = player.getCurrentTime();
for (i = 0; i < Math.ceil(player.getDuration() / 2); i++) {
if (ct > (i * 2) && ct <= (i * 2 + 2)) {
arr[i] = 1;
global_array[i] = 1;
}
}
sum = arr.reduce(function(a, b) {
return a + b;
}, 0);
time = Math.floor(sum * 100 / (arr.length));
if (old_time !== time) {
document.getElementById("prog_bar").style.width = time + "%";
document.getElementById("prog_bar").innerHTML = time + "%";
closingCode();
}
old_time = time;
//save time in database for each user
}
function closingCode() {
if (!isNaN(time)) {
progressGrid = JSON.stringify(global_array);
jQuery.ajax({
cache: false,
timeout: 8000,
url: php_array.admin_ajax,
dataType: "json",
type: 'POST',
data: ({
action: 'upload_progress',
security: '<?php echo wp_create_nonce("oy-security-nonce") ?>',
Video_ID: '<?php echo $video_id; ?>',
Category_ID: '<?php echo $tax_field->term_id; ?>',
User_ID: '<?php echo $user_id ?>',
Progress: time,
ProgressGrid: progressGrid
}),
success: function(data) {
console.log("progress", data);
}
});
}
}
Я добавил document.cook ie = time; в javascript, чтобы передать текущее значение в файлы cookie, а затем вызвать его обратно в php
<?php $progress = $_COOKIE['time']; ?>
Результат всегда возвращает 0 в базе данных.