显示递归请求的进度

时间:2018-05-31 12:41:05

标签: javascript jquery

我有递归js脚本,它将GET请求和php脚本更新xml数据发送100行一次。但我的问题是当我运行脚本时没有显示进度。我不明白错误在哪里或我如何解决它

    $(document).ready(function(){
    function ProcessClear(start_position){

        $.ajax({
            type:"GET",
            async:false, // set async false to wait for previous response; true for async
            url: "checkUrl.php?start=y&start_position="+start_position,
            dataType:"html",
            success: function(data){
                if( data == "done" ){
                    $('.at_test_red span').html( "end" );
                }else{
                    $('.at_test_red span').html( data );


                    ProcessClear( data );
                }
            }
        });

    }

    ProcessClear(1);
});

在这一行$('.at_test_red span').html( data );应该是可见的,但它不起作用

1 个答案:

答案 0 :(得分:1)

async : false导致此问题。因为脚本将在单线程上运行。它应该是true

  

async:false,//设置async false以等待先前的响应;对于异步

,则为true

为了达到上述意图,当你得到上一个请求的响应时,你应该递归地调用ProcessClear函数。即在ajax电话的completesuccess中。

   $(document).ready(function(){
    function ProcessClear(start_position){

        $.ajax({
            type:"GET", 
            async: true, //true is default         
            url: "checkUrl.php?start=y&start_position="+start_position,
            dataType:"html",
            success: function(data){
                if( data == "done" ){
                    $('.at_test_red span').html( "end" );
                }else{
                    $('.at_test_red span').html( data );


                    ProcessClear( data ); //<-- This will call only on getting response from previous request.
                }
            }
        });

    }

    ProcessClear(1);
});