Бесконечный цикл двух вызовов ajax продолжает загружать страницу и не вызывать функцию успеха - PullRequest
0 голосов
/ 27 августа 2018

Я запускаю две функции, которые каждая из них запускает в ajax. И если вызов был успешным, он вызывает эту функцию снова (бесконечный цикл). Мне нужен этот бесконечный цикл, потому что PHP сторона получает информацию от json, которая может меняться каждую секунду.

Так вот в чем проблема: я открываю сайт, страница продолжает загружаться, и вызовы ajax не выполняют код в success. НО , если я обновляю страницу несколько раз, она ** не ** продолжает загружаться и выполняет код в success, но она не будет работать так долго и не будет выполнить код в success.

Функция ошибки ничего не регистрирует, как если бы она была успешной.

Вот код:

function startAjax(offset=0, status=0) {
    $.ajax({
        url: "/handler.php",
        type: "GET",
        dataType: 'json',
        data: { offset: offset, status: status },
        success: function(data) {
            console.log(data);
            if (data.game_status == "planned") {
                setInterval(function() {
                    var currentDate = Math.round(new Date().getTime() / 1000);
                    var newDate = (data.start_time - currentDate) * 1000;
                    $('#game_countdown').html(getFormattedDate(newDate));
                }, 1000);
                $('#game_countdown').show();
            } else {
                if (data.status == 1) {
                    $('#game_countdown').hide();
                    $('.answer').css('background-color', '');
                    $('#question').show();
                    $('#question').html(data.id + ') ' + data.question);
                    $('#answer_1').html(data.first);
                    $('#answer_2').html(data.second);
                    $('#answer_3').html(data.third);
                    $('#answers_block').show();
                    $('.answer').removeClass("active");
                    $('#answer_'+data.answer_id).addClass("active");
                    document.title = data.answer_id + '. ' + $('#answer_' + data.answer_id).text();
                } else if (data.status == 2) {
                    $('#game_countdown').html("Ожидание вопросов...");
                    $('#game_countdown').show();
                } else if (data.status == 3) {
                    console.log("RIGHT ANSWER");
                    console.log(data.right_answer);
                    var element = $('#answer_'+data.right_answer);
                    if (element.hasClass('active')) {
                        element.removeClass('active');
                    }
                    element.css('background-color', 'lime');
                }
            }
            startAjax(data.offset, data.status);
        },
        error: function(error) {
            console.log("ERROR!");
            console.log(error.responseText);
            $('#connect-error').show();
        }
    });
}

function startSearch(offset=0) {
    $.ajax({
        url: "/search.php",
        type: "GET",
        dataType: 'json',
        data: { offset: offset },
        success: function(data) {
            console.log(data);
            if ($('.search-button').hasClass('active')) {
                if (data.status == 1) {
                    switch ($('.search-button.active').attr('id')) {
                        case "s1":
                        window.open("https://www.google.ru/search?hl=ru&q="+data.question);
                        break;
                        case "s2":
                        window.open("https://www.google.ru/search?hl=ru&q="+data.question+" "+data.first+" "+data.second+" "+data.third);
                        break;
                        case "s3":
                        window.open("https://yandex.ru/search/?text="+data.question);
                        break;
                        case "s4":
                        window.open("https://yandex.ru/search/?text="+data.question+" "+data.first+" "+data.second+" "+data.third);
                        break;
                    }
                }
            }

            startSearch(data.offset);
        },
        error: function(error) {
            console.log("ERROR!");
            console.log(error.responseText);
            $('#connect-error').show();
        }
    });
}

startSearch();
startAjax();

1 Ответ

0 голосов
/ 28 августа 2018

Я выяснил, какая у меня была проблема ... * сценарий 1001 * в конце body вызывал эту проблему ... Я бы никогда не подумал, что это может быть проблема

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