Передать Live Ajax ответ на PHP и запрос в базу данных - PullRequest
0 голосов
/ 19 июня 2020

Я интегрировал 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 в базе данных.

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