douwei8672 2013-12-14 11:53
浏览 40

PHP + Mysql插入+ jQuery进度条

I have problem with showing current inserted rows into mysql with query. Now I have this code in index.php:

  $('#nacitatATC').click(function() {
    $.ajax({
            xhr: function() {

                    var xhr = new window.XMLHttpRequest();
                    xhr.addEventListener("progress", function(e){
                        var p = (e.loaded / e.total)*100;
                        var prave = $("#progress").html();
                              $("#progress").html(prave+"<br>"+p);
                    });
                return xhr;

            }
            , type: 'post'
            , cache: false
            , url: "/sql.php"});

      });
  });

and in sql.php I have the php code with inserting data into mysql with for(). $i is the current inserting line and $pocet is total lines.

The problem is with show current inserting line with ajax. The code above shows in div #progress "100" when ajax finish loading.

I need show 1% 2% 3% 4%... 99% 100% Completed. Thanks for help!

  • 写回答

1条回答 默认 最新

  • duanbiaoshu2021 2013-12-14 12:15
    关注

    I think php -> flush() is what you are looking for.

    This Example works perfect on my php-apache on debian

    see ajax-request-progress-percentage-log

    PHP side:

    header( 'Content-type: text/html; charset=utf-8' );
    echo 'Begin ...<br />';
    for( $i = 0 ; $i < 10 ; $i++ )
    {
        echo $i . '<br />';
        flush();
        ob_flush();
        sleep(1);
    }
    echo 'End ...<br />';
    

    site:& javascript:

    <!doctype html>
    <html>
    <head>
        <title>Test Flush</title>
        <meta charset="utf-8">
        <script src="./js/jquery-2.0.3.min.js" type="text/javascript"></script>
    <body>
    <h1>Hello</h1>
    <div id="progress">0%</div>
    
    <p>
    </p>
    <script type="text/javascript">
        $('h1').click(function() {
        $.ajax({
                xhr: function() {
    
                        var xhr = new window.XMLHttpRequest();
                        xhr.addEventListener("progress", function(e){
                            console.log(e.currentTarget.response);
                            $("#progress").html(e.currentTarget.response);
                        });
                    return xhr;
    
                }
                , type: 'post'
                , cache: false
                , url: "testFlush.php"
            });
    
        });
    
    </script>
    </body>
    

    Also have a look at Rogers Answer in how-to-flush-output-after-each-echo-call He found issues in the apache setup

    评论

报告相同问题?

悬赏问题

  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。