使用jQuery在网页上实时显示数据
我想要一个网页,它能不断更新图表,显示新到的数据。通常情况下,所有的数据在请求开始时会传递到页面上。但是,我需要这个页面能够每隔几秒就自动更新,重新绘制图表。
背景
这个网页会类似于这个 http://www.panic.com/blog/2010/03/the-panic-status-board/。接收到的数据将是由Arduino测量的温度值,这些数据会保存到Django数据库中(这部分已经完成)。
更新
听起来解决办法是使用 jQuery.ajax()
函数( http://api.jquery.com/jQuery.ajax/),并在 .complete
回调中设置一个函数,这个函数会在几秒后再发起另一个请求,去一个返回JSON格式数据的URL。
那这个方法怎么安排呢?可以用 .delay()
函数吗?
2 个回答
如果你的数据是实时生成的图形,你可以通过Django直接提供这些图形(可以是gif、png或其他图形格式),然后单独刷新每个图形,或者一次性刷新整个页面。
这要看你的负载和性能需求,但你可以先简单地刷新整个页面,如果需要的话,再用AJAX技术只刷新特定的部分(用jQuery
或prototype
来实现这个功能非常简单)。如果你预计会有很多数据,那么你应该考虑在客户端生成图形,只使用JSON格式的增量数据。
这个页面需要定期进行一些 jQuery.ajax 的请求,里面有一个 url
参数,这个参数是指向服务器的地址,服务器会提供最新的数据(可能只是从客户端上次获取信息以来的增量数据——客户端可以在Ajax请求中把这个时间点作为查询参数发送过去),最好是以JSON格式返回。异步请求完成后,回调函数可以安排下一次的Ajax请求在几秒钟后进行,然后更新图表。
至于服务器端使用Django,这并不是特别重要——服务器只需要把一堆数据格式化成JSON并发送回去就可以了。