Я запускаю две функции, которые каждая из них запускает в 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();