最佳实践是将进度值存储在 db 或 APC、Memcache 或 Redis 等键值存储系统中。然后使用 ajax 查询检索进度。
一个好的 jquery 插件是来自 jQuery-ui 的进度条,你可以使用 json 来编码进度值:
// GET /ajax/get-status.json
{
"progress":10,
"error":"",
"warning":""
}
这页纸:
<div id="error" style="color: red"></div>
<div id="warning" style="color: yellow"></div>
<div id="message"></div>
<div id="progressbar"></div>
<script type="text/javascript">
jQuery(document).ready(function() {
$("#progressbar").progressbar({ value: 0 });
$.ajaxSetup({ cache: false });
function updateProgress() {
jQuery.getJSON("/ajax/get-status.json", function(response) {
if (response.error) {
$("#error").html( response.error );
return;
} else {
$("#progressbar").progressbar( 'value', parseInt( response.progress ) ); // Add the new value to the progress bar
$("#message").html( response.message );
$("#warning").html( response.warning );
if(parseInt( response.progress ) < 100){
setTimeout(updateProgress, 1);
}
}
});
}
updateProgress();
});
</script>