2010-01-06 59 views
5

这是我正在尝试做的。我有一个网站,可以让用户提交在服务提取和处理的Jobs表中排队的请求。表中有一个状态列,表示请求是排队等待处理还是由服务当前处理,或者服务已完成处理请求。整个过程需要几分钟的时间。从网页轮询数据库? - ASP.NET

我有一个状态ASP.NET页面,我需要在其中实时显示他们的请求的当前状态。我想显示某种动画并表示当前状态。我能做到这一点的一种方法是每隔x秒刷新一次元HTTP,以检查请求的状态(我想这就是Expedia,Priceline等网站的做法吗?)

我想阻止一个完整的页面刷新是可能的,并寻找一个AJAX/JQuery解决方案。我将如何实现这一点?投票是否正确?

回答

4

通过AJAX轮询是最简单和最简单的您的需求。如果你知道所需时间的上限和下限,那么我可能只会让动画运行那段时间,然后为特殊情况做些事情。

其他人做同样的:

见:http://news.ycombinator.com/item?id=946165http://www.chrisharrison.net/projects/progressbars/ProgBarHarrison.pdf

+0

你可以详细说明一下或者指向一个关于如何实现这个的代码示例吗? – Nick 2010-01-06 23:34:13

+0

对于轮询解决方案,请参阅:http://buntin.org/2008/09/23/jquery-polling-plugin/这是一个聊天应用程序,但可以*很容易*适应您的需求。 – 2010-01-06 23:36:31

0

轮询可能是最好的方法,如果你不想在网页服务器上连续运行...

但是,如果不打扰你,那么你可能想看看在[similar answer]我给了另一个问题,允许您动态更新页面...浏览器将显示继续“加载”页面,直到它完成。

0

你有没有看着异步调用到服务器。这将允许你将呼叫放入服务器,而不是等待结果,当呼叫完成时,事件将被触发,客户端页面上的方法将被触发,这听起来像你所需要的,而你不会做轮询,这里更多的信息:

http://msdn.microsoft.com/en-us/magazine/cc163725.aspx

希望这有助于。

+0

如果进程需要比会话超时更长的时间,我会不会遇到超时问题? – Nick 2010-01-07 00:53:05

0

你可能想看看“长轮询”,也被称为彗星。

这个想法是,你从客户端发出一个异步Ajax请求。在服务器端,您将请求挂起,直到某些状态发生变化(因此它有新的报告)。然后您释放请求,并返回更新的信息。

这比单纯轮询的优势在于,请求只在某些事情发生变化时才会返回。它也可以看起来更具响应性,因为它主要由服务器端驱动。