2011-02-09 82 views
4

我正在使用ASP.NET和SQL Server。我想异步加载数据库中的数据并显示立即部分加载的数据。如何异步加载和显示数据

假设有万吨的记录,在查询结果。 3秒后,它加载20%,然后我必须立即处理并显示20%的数据,而不是等待完整的响应。我知道jQuery中的.jjax加载数据异步。是否可以处理部分响应,不等待完整响应并立即显示。

有什么办法得到这个?

回答

2

假设有吨的记录在查询结果

你必须自己AKS:将最终用户看到吨的纪录一次?


不指定什么,你是如何显示的数据,所以我会假设你正在显示类似网格的数据。

我们今天在这种通信场景中做的事情是使用页面加载数据并在用户向下滚动网格时触发数据,甚至可以在移动设备甚至Facebook,Twitter等中看到这一点。

它会加载第一页(例如我们设置的页面为20条记录),所以它会加载前20条记录,但很快到达底部,它会自动加载20多个记录(第1页)。

这种技术被称为Infinite Scroll

+0

+1尼斯提示!其实我必须像webservice响应中的东西一样实现Facebook ...但响应速度太慢。这就是为什么问。 – Brij 2011-09-21 11:39:01

0

可能solicion:

  1. 您创建一个文件ASHX(通用处理器),或者适合你。该文件将通过GET或POST进行咨询。
  2. 相信2店的程序 a。返回记录数 b。有完整的结果
  3. Ajax使呼叫sp“a”。你会收到记录的数量。
  4. 的Ajax查询SP“b”和你保存在高速缓存或会话查询的一部分,并回答你想要的记录数。
  5. 理想情况下,咨询的结果是json格式,可以更小,但花费更长的时间来加载JavaScript。你也可以用HTML返回它,传输更重,但加载速度要快得多。

(我希望你能理解,因为我的英语很糟糕)

0

没有它了不可能的事情,你应该添加一些请求处理部分响应,在服务器端,您应该部分数据。在$ .Ajax(jQuery)选项异步中,同步请求可能会临时锁定浏览器,并在请求处于活动状态时禁用任何操作。

1

像亚历克斯说,你不能开始展示部分反应......我敢打赌,你的等待时间与才能查询并返回数据集,而不是它需要渲染日期的时间。这就是说,你可以很容易地创建功能,以获得前20%的记录,然后试图获得最后的80%。当然,你会异步加载每个结果。

这样做的缺点是,你必须要产生2个请求/响应周期和2个数据库查询。

只是好奇多长时间需要(使用SQL经理为例)来运行自己的网站之外的SQL查询?实际返回的数据量是10kb还是1000kb?如果您有很多文本数据,请查看添加压缩到您的响应。

1

您可以使用隐藏的IFRAME接收响应,该响应使用ASP response.flush方法写入(输出递增形成的响应)。然后,使用一个js间隔,可以查询这个iframe的身体得到更新的内容...

0

这里是简单的解决方案。 1.你应该创建一个单独的asp.net页面,其中将采取1参数,开始记录号码, 你应该确保有一个唯一的记录号码表。并从给定的起始记录号检索20行。 2.您需要调用AJAX get方法,该方法通过每次递增20个记录号递归,直到获得响应为NULL。

希望它会解决。

0

而是呈现出局部的反应,你为什么不只是显示数据的服务器端分页表中。如果您有许多记录,则只需在页面上显示10条记录,然后返回到数据库,以便在用户页面访问数据时获取下一个记录。