2015-09-09 2 views
0

Вот мой код:

$(document).ready(function(){ 
    $("#pbo").hide(); 
    $('.pie_progress').asPieProgress({ 
     namespace: 'pie_progress', 
     size: 100, 
     barsize: '4' 
    }); 
    $("#getit").click(function(){ 
     $.post("process.php", 
     { 
      yurl: $("#yurl").val() 
     }, 
     function(data,status){ 
      if(data > 0) { 
       $('#yurl').hide(); 
       $('#getit').hide(); 
       $("#pbo").show(); 
       $('h1').hide(); 

       $('.pie_progress').asPieProgress('start'); 
       $('.pie_progress').asPieProgress('go',data); 

      } else { 
       $('#yurl').show(); 
       $('#getit').show(); 
       $("#pbo").hide(); 
      } 
     }); 
    }); 
}); 

Когда я нажимаю на моей #getit кнопке, она выполняет process.php и получает возвращающий данные, которые, в свою очередь передается $('.pie_progress').asPieProgress('go',data);. Моя панель выполнения обновляется с этими данными, но это, похоже, происходит только один раз. Есть ли способ продолжить делать запросы POST до тех пор, пока значение данных не станет 100?

Примечание: in process.php У меня есть php exec, который ускоряет ход каждой секунды.

ответ

0

Как насчет того, чтобы вызвать функцию ajax внутри функции (например: processTo100) и напомнить ее каждый раз?

Что-то вроде этого:

$(document).ready(function(){ 
    $("#pbo").hide(); 
    $('.pie_progress').asPieProgress({ 
     namespace: 'pie_progress', 
     size: 100, 
     barsize: '4' 
    }); 
    $("#getit").click(function(){ 
     processTo100(); 
    }); 

    function processTo100() { 
     $.post("process.php", 
     { 
      yurl: $("#yurl").val() 
     }, 
     function(data,status) { 
      if(data > 0) { 
       $('#yurl').hide(); 
       $('#getit').hide(); 
       $("#pbo").show(); 
       $('h1').hide(); 

       $('.pie_progress').asPieProgress('start'); 
       $('.pie_progress').asPieProgress('go',data); 
       if(parseInt(data) <= 100) { 
        processTo100(); 
       } 
      } else { 
       $('#yurl').show(); 
       $('#getit').show(); 
       $("#pbo").hide(); 
      } 
     }); 
    } 

}); 
+0

Петля правильно, но каждый раз, когда он повторно опубликовать в process.php снова и снова. Я хотел, чтобы ajax отправлял один раз process.php и получал эхо каждого процесса каждую секунду. например, моего process.php: для ($ i = 1; $ i <= 100; $ i ++) { echo $ i; сон (1); } – ashwin2011

Смежные вопросы