我正在使用ASP.NET和SQL Server。我想异步加载来自数据库的数据,并显示部分立即加载的数据。
假设查询结果中有大量记录。 3秒后,它加载20%,然后我必须立即处理并显示20%的数据,而不是等待完整的响应。我知道jQuery中的$ .Ajax加载数据异步。是否可以处理部分响应,不等待完整响应并立即显示。
有没有办法得到这个?
答案 0 :(得分:3)
假设查询结果中有吨记录
您必须自己说:最终用户是否会立即看到吨记录?
您没有指定显示数据的内容和方式,所以我假设您在网格中显示数据。
我们今天在这种共同场景中所做的是使用页面加载数据并在用户向下滚动网格时触发它,你甚至可以在移动设备中甚至在Facebook,Twitter等上看到它......
它将加载第一页(例如我们将页面设置为20条记录),因此它将加载前20条记录(第0页),但很快就会到达底部,它会自动加载20多条记录(第1页)。
此技术称为 Infinite Scroll
答案 1 :(得分:1)
就像Alex说你无法开始显示部分响应......我敢打赌你的等待时间与查询和返回数据集所需的时间有关,而不是渲染日期所需的时间。也就是说,在尝试获得最后80%之前,您可以轻松创建仅获取前20%记录的功能。当然,您将异步加载每个结果。
这样做的缺点是你必须生成2个请求/响应周期和2个数据库查询。
好奇好在网站外运行SQL查询需要多长时间(例如使用SQL Manager)?实际返回的数据量是10kb还是1000kb?如果您有大量文本数据,请查看为您的回复添加压缩。
答案 2 :(得分:1)
您可以使用隐藏的IFRAME接收响应,该响应使用ASP response.flush方法写入(输出递增形式的响应)。然后,使用js间隔,您可以查询此iframe的正文以获取更新的内容......
答案 3 :(得分:0)
可能的请求:
(我希望你能理解,因为我的英语非常糟糕)
答案 4 :(得分:0)
不可能,你应该添加几个处理部分响应的请求,在服务器端你应该部分数据。在$ .Ajax(jQuery)选项中,异步意味着同步请求可能会暂时锁定浏览器,在请求处于活动状态时禁用任何操作。
答案 5 :(得分:0)
这是简单的解决方案。 1.你应该创建一个单独的asp.net页面,它将采用1个参数,起始记录号, 你应该确保有一个具有唯一记录号的表。并从给定的起始记录号中检索20行。 2.你需要调用AJAX get方法,该方法是递归的,每次增加记录数20,直到你得到的响应为止。
希望它会解决。
答案 6 :(得分:0)
为什么不显示服务器端分页数据表,而不是显示部分响应。如果您有许多记录,只需在页面上显示10条记录,当用户对数据进行分页时,返回数据库以获取下一条记录。