Вызов веб-сервиса в setInterval

0

Как всегда, извините мой "Тарзан" английский, пожалуйста: P

Проблема заключается в следующем: я должен вызвать webService с временными интервалами, чтобы убедиться, что список контактов загружен полностью.

Процедура такова:
1. -Click на кнопке для отправки CSV файла.
2. -A div с анимацией загрузки должен быть просмотрен WHILE UPLOADING CSV в базу данных.
3. -When websService завершает ввод данных, div с анимацией разгрузки должен исчезнуть.

Я создал функцию JS, которая "Я думаю" в порядке, как показано:

function loadWS(idArchive){
    $('#loaderX').css('display', 'block');            //Here starts with the animation
    var interrupt=setInterval(function(){             //Start asking the WS
    $.ajax({
        data:{
            'idArchive': idArchive,
        },
        url:'/NewsLetters.checkFinal',                //WebService call: the webservice checks 
        type:'post',                                  //if register entry is complete.
        success:function(res){
            var r=eval(res);
            if(r==1){                                 //IF Response ok? we've finished the task
                clearInterval(interrupt);
                load_sec(link,106);                   //This reloads the section via AJAX
                $('#loaderX').css('display', 'none'); //Here stops the animation
            }
            if (r==0) {
            }
        }
    });
},1000);
}

Я делаю что-то неправильно? Правильно ли вызывать WS в процессе setInterval?

Спасибо всем заблаговременно!

  • 0
    Попробуйте один раз, если у вас есть какие-либо проблемы, дайте нам знать.
  • 0
    Это работает хорошо, если я называю это только один раз. Я думаю, что проблема рекурсивная или что-то ... ответы также являются правильными ...
Показать ещё 5 комментариев
Теги:
web-services

2 ответа

1

На основании проверки процесса вам не нужен setInterval, вам просто нужно снова вызвать функцию. Я бы просто сделал прямой аякс-звонок. Просто будьте осторожны, поскольку это может вызвать бесконечный цикл

function loadWS(idArchive) {
    $('#loaderX').css('display', 'block'); //Here starts with the animation
    checkStatus(idArchive);
}

function checkStatus(idArchive) {
    $.ajax({
        data: {
            'idArchive': idArchive
        },
        url: '/NewsLetters.checkFinal', //WebService call: the webservice checks 
        type: 'post', //if register entry is complete.
        error: function (xhr, status, error) {
            // do something with the error
        }
        success: function (res) {
            var r = parseInt(res);
            if (r === 1) { //IF Response ok? we've finished the task                
                load_sec(link, 106); //This reloads the section via AJAX
                $('#loaderX').css('display', 'none'); //Here stops the animation
            } else if (r === 0) {
                setTimeout(checkStatus(idArchive), 1000);
            }
        }
    });
}
  • 0
    Это именно то, что я бы сделал. Если вам действительно нужна задержка между вызовами ajax: if (r == 0) { setTimeout(function() { checkStatus(idArchive); }, 1000); } Кроме того, вы, вероятно, не хотите использовать eval : stackoverflow.com/questions/86513/…
  • 0
    хе, я делал это так же, как вы сделали этот комментарий
Показать ещё 2 комментария
1

просто сделайте снизу и увеличьте время как минимум на 5 секунд.

setInterval(function(){
    $.ajax({
        data:{
            'idArchive': idArchive,
        },
        url:'/NewsLetters.checkFinal',                //WebService call: the webservice checks 
        type:'post',                                  //if register entry is complete.
        success:function(res){
            var r=eval(res);
            if(r==1){                                 //IF Response ok? we've finished the task
                clearInterval(interrupt);
                load_sec(link,106);                   //This reloads the section via AJAX
                $('#loaderX').css('display', 'none'); //Here stops the animation
            }
            if (r==0) {
            }
        }
    });
}, 5000);
  • 0
    но ничто не отличается

Ещё вопросы

Сообщество Overcoder
Наверх
Меню