ajax小白,不知道怎么实现进度条功能,今天终于懂了皮毛并简单实现。
后台是一个循环,会多次向前台传值,但前台ajax只能连接一次。我实现的功能不需要使用json,所以只是传的文本。我有一个最大的错误的认知是,我以为response传过来的是一个个文本,然而并不是,它是一个流,一条一条的文本都会粘在这个流上,所以必须通过设置线程时间来确保获得每个文本的时间。看简略代码。
后台:
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
for(int i =0;i<list.size() ;i++){
out.println("此次同步涉及数据共"+list.size()+"条,正在更新第"+(i+1)+"条,请稍等...");
out.flush(); //不要关闭
Thread.currentThread().sleep(1000);
}
前台ajax:
function progressBar(){
createXMLxBatchSynHttpRequest();
var url = "/tech/fee.do?method=progress;
xmlBatchSynHttp.open("GET", url, true);