我们有一个REST API发出JSON,我们可以从中获取数据(使用AJAX)。我们想要做的是能够进行AJAX调用,其中每个调用获取一小块数据(比如5000行左右),然后将其写入浏览器上的CSV文件作为下载。
似乎如果我们将所有数据都存储在JS内存中,那么将其写入CSV文件并不难,但如果我们要写出100K记录,那么我们将被迫一次性获取所有100K然后一次性生成文件。
相反,我们觉得在服务器和客户端上下载小块并将其流式传输到文件下载会更加温和。有办法吗?
(我们目前正在使用jQuery 2.0.0,但不介意使用不同的库来完成这项工作)
答案 0 :(得分:1)
基本上你正在寻找记录的分页......你可以这样做
使用jquery进行多次调用,你可以这样做
$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ).done(function( a1, a2 ) {
// a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively.
// Each argument is an array with the following structure: [ data, statusText, jqXHR ]
var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It"
if ( /Whip It/.test( data ) ) {
alert( "We got what we came for!" );
}
});
在代码中有多个ajax调用,最后它合并数据......如果你使用C#而不是TPL(任务parellel库),那么你必须做的服务器端同样的事情...对于每个调用你需要使用页码
来打电话