Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript导出CSV并显示进度条_Javascript_Ajax_Csv_Progress Bar - Fatal编程技术网

使用Javascript导出CSV并显示进度条

使用Javascript导出CSV并显示进度条,javascript,ajax,csv,progress-bar,Javascript,Ajax,Csv,Progress Bar,在通过ajax生成和提供CSV文件时,是否有方法显示进度条?由于数据库的原因,CSV文件需要一段时间才能生成,并且需要在屏幕上显示一个加载程序,并在完成后将其隐藏。我希望这是ajax,或者在必要时保持在同一页面上。现在我在下面做这个,但是我不知道文件什么时候下载完成以停止进程 var iframe = document.createElement("iframe"); iframe.src = (value.url); iframe

在通过ajax生成和提供CSV文件时,是否有方法显示进度条?由于数据库的原因,CSV文件需要一段时间才能生成,并且需要在屏幕上显示一个加载程序,并在完成后将其隐藏。我希望这是ajax,或者在必要时保持在同一页面上。现在我在下面做这个,但是我不知道文件什么时候下载完成以停止进程

var iframe = document.createElement("iframe");
                iframe.src = (value.url);
                iframe.style.display = "none";
                document.body.appendChild(iframe);

如果我正确地理解了您的情况,那么当您收到请求时,您正在服务器端生成一个文件,将其保存到磁盘,然后从那里提供服务。如果这就是你正在做的,你有两个选择:

  • 在开始生成文件时,使用必须生成的总行数和当前生成的行数,从生成代码中更新某些共享状态(memcached、redis、mongodb、sqlite数据库或文件)。向端点发出额外的ajax请求,该端点将为您提供该共享状态的当前值
  • 将生成的CSV文件直接流回到客户机-除非数据的获取占用了大部分时间,否则这将导致下载对话框更快地出现,并明显加快速度

  • 我不是把它存到磁盘上,只是把它端上来。我试图在完成计算后停止进度条。您将其存储在临时文件中的解决方案可能是我唯一的选择,因为这样我就可以停止进程并在第二次请求时下载该文件。@MikeFlynn-是的,在向下传输文件时更新一个静态变量,并点击另一个web服务以获取静态变量中的值,作为选项#1的一个实例。