1

我有一个更新文件的 PHP 进程,并为每个文件编写状态报告。

在发生这种情况时,我希望在最终响应之前更新用户的浏览器。

除非有更好的方法,否则我只是想要一些关于如何循环无限刷新getJSON()结果直到 ajax 响应到来的建议。

做这个的最好方式是什么?

4

1 回答 1

0

这最终成为我使用的解决方案:

$(document).on('click', "#ss_batch_edit_processing", function (e) { 

    var ids = get_selected();
    var status_location = '<?php echo symbiostock_TMPDIR . '/report.txt' ?>';

    if(ids == 0){
        return;
        }       

    $('.' + loading_icon_small).show();

    var data = {
        action: 'ss_professional_ajax',
        security: '<?php echo $ajax_nonce; ?>',
        reprocessing_action: $('input:radio[name=ss_reprocessing_action]:checked').val(),
        ids: ids,                  
    };      

    var completed = 0;

    $.post(ajaxurl, data, function (response) { 

        $('.' + loading_icon_small).hide(); 

        completed = 1;      

    });

    var get_update = function(){    

        $.getJSON(status_location, function (data) {                
            var update = '<ul><li><strong>'+data['title']+'</strong></li><li><strong>Count:</strong> '+data['count']+' / '+data['total']+'</li><li><strong>Last processed</strong>: Image # '+data['last_id']+'</li></ul>';
            $('#ss-reprocessing-results').html(update).delay(1000);         
        });

        if(completed == 1){
            clearInterval(timed_requests)
            return false;
        }   

    };      

    var interval = 1000; // every 1 second      
    var timed_requests = setInterval(get_update, interval);         
}); 
于 2013-08-04T05:17:34.320 回答