我有一个页面,它使用
jquery的ajax函数发送一些消息.
可能会有超过50k个消息发送.
这可能需要一些时间显然.
我想要做的是显示正在发送消息的进度条.
后端是PHP.
我该怎么做?
我的解决方案
通过原始ajax调用中的唯一标识符发送.
该标识符存储在数据库(或标识符等)中,以及完成百分比.
原始脚本继续更新.
一个功能被设置为进度(ident)
您可以通过.html()将动画gif加载到结果区域,直到ajax函数返回结果.只是一个想法
关于jquery ui进度条,间歇地通过你的脚本,你会想要一个表示完成百分比的数值作为一个赋值的javascript变量.例如…
// text example PHP script if (isset($_GET['twentyfive-percent'])) { sleep(2); // I used sleep() to simulate processing echo '$("#progressbar").progressbar({ value: 25 });'; } if (isset($_GET['fifty-percent'])) { sleep(2); echo '$("#progressbar").progressbar({ value: 50 });'; } if (isset($_GET['seventyfive-percent'])) { sleep(2); echo '$("#progressbar").progressbar({ value: 75 });'; } if (isset($_GET['onehundred-percent'])) { sleep(2); echo '$("#progressbar").progressbar({ value: 100 });'; }
以下是我用来获取进度条来更新其位置的函数.有点坚果,我知道.
avail_elem = 0; function progress_bar() { progress_status = $('#progressbar').progressbar('value'); progress_status_avail = ['twentyfive-percent','fifty-percent','seventyfive-percent','onehundred-percent']; if (progress_status != '100') { $.ajax({ url: 'test.PHP?' + progress_status_avail[avail_elem],success: function(msg) { eval(msg); avail_elem++; progress_bar(); } }); } }
如果我不得不猜测,我敢打赌有一个更好的方法…但是,当我测试它是这样对我有用的方式.