【问题标题】:Ajax loop to get data from $.post each secondAjax 循环每秒从 $.post 获取数据
【发布时间】:2015-09-09 15:32:36
【问题描述】:

这是我的代码:

$(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?

注意:在 process.php 中,我有一个 php exec,它每秒回显进度。

【问题讨论】:

    标签: php ajax linux loops progress-bar


    【解决方案1】:

    将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();
                }
            });
        }
    
    });
    

    【讨论】:

    • 循环是正确的,但每次它都会一次又一次地重新发布 process.php。我希望 ajax 发布一次 process.php 并每秒获得进程的回声。例如我的 process.php : for( $i=1; $i
    猜你喜欢
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 2017-05-10
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    相关资源
    最近更新 更多