Повторите запрос Ajax 5 раз с интервалом в 1 секунду

У меня есть файл verify.php, который проверит запись в базе данных и вернет 1, если он существует, или 0, если его нет. Но эта база данных будет обновляться от 0 до 5 секунд. Таким образом, по крайней мере в течение первых 5 секунд возвращаемое значение может быть 0.

На другой странице я хочу проверить возвращение verify.php с помощью AJAX и повторить попытку 5 раз с интервалом в 1 секунду между каждой проверкой. Если в какой-либо момент этой 5-секундной проверки он получил 1, выйдите из цикла проверки и отобразите сообщение об успешном завершении.

Я написал это, но он проверяет только один раз, и я не знаю, как сделать это проверить х раз:

<p id="status"></p>
<script type="text/javascript">
var url = 'verify.php';
$('#status').text('Please wait...');

$(document).ready(function(){
$.ajax({
type: 'POST',
url:url,
success: function(msg){
if (msg == 1){
$('#status').text('success');
}else{
$('#status').text('failed');
}
}
});
});
</script>

Буду признателен за любую оказанную помощь. Благодарю.

0

Решение

  • Превратите свой AJAX-вызов в функцию
  • Есть переменная, которая отслеживает, сколько попыток у вас есть
  • Вызовите свою функцию AJAX в ее собственном обратном вызове с задержкой в ​​одну секунду, если это необходимо, то есть вы не исчерпали свои попытки и ваш статус неверен.

Код

var tries = 0;
function getStatus() {
$.ajax({
type: 'POST',
url: url,
success: function(msg){
tries++;
if (msg == 1){
$('#status').text('success');
} else {
if (tries >= 5 ) {
$('#status').text('failed');
} else {
setTimeout(getStatus, 1000);
}
}
}
});
}
2

Другие решения

без написания кода для вас, вот подход «грубой силы» …

оберните ваш Ajax-вызов в функцию
объявить переменную «можно остановить» и временную переменную вне этой функции
каждый раз, когда вызывается функция, увеличивайте временную переменную
установите переменную «can stop» в вашем коде ответа ajax

создать функцию, которая выглядит рекурсивно;
он проверяет переменную «can stop» и выдает залог, как только он установлен
он вызывает вашу функцию AJAX
он проверяет переменную с временным вызовом и выдает залог, если счетчик пройден
он вызывает setTimeout для вызова самого себя;

использовать window.setTimeout (или оболочку ajax для него), чтобы подождать секунду

0

Использовать window.setInterval(function , timeInMillis) функция времени ваших запросов AJAX. Используйте логическое значение, чтобы проверить, когда конкретный запрос вернулся.

Только когда он вернется, таймер может сделать новый запрос.

Желаю тебе всего наилучшего.

  <script type="text/javascript">
var queryOn = false;
var interval;
$(function (){

var attempts = 0;
interval = window.setInterval(
function () {
if (queryOn === false) {
queryOn = true;var url = "...url";

$.ajax({
type: 'POST',
url: url,
success: function (msg) {

queryOn = false;
if (msg === 1) {
$('#status').text('success');
window.clearInterval(interval);
} else {
$('#status').text('failed');
}if(attempts === 5){
window.clearInterval(interval);
}
++attempts;
}
});
}
}, 5000);

});
</script>
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector