正 文

ASP.NET+AJAX解决网页打开等待问题


www.7dspace.com  更新日期:2005-11-17 7:07:44  七度空间



  五、 AJAX解决方案

  在Internet Explorer中的页面重载会在页面变成一片空白并等待重载之时造成一次听得见的鼠标击键和一次屏幕闪动。如果它每隔两秒发生一次,这可能相当烦人。AJAX提供了一种选择-只有一个页面加载并且页面中的Javascript请求每隔500毫秒请求状态时,才动态地更新页面(见图5)。


图5.AJAX解决方案:Javascript每500毫秒更新后台的页面数据。

  该AJAX页面的HTML部分显示于列表6(详见下载源码),其中的大多数代码是Javascript。该Javascript首先激活addField调用-它增加从服务器中以XML形式返回的不同字段。这个startup页面开始第一次到服务器的请求。getData通过调用createHTTPRequest开始一个请求。这个函数通过具有跨平台的代码来构建HTTP请求对象。

  该HTTP请求是异步的。在请求完成时,调用handleResponse函数-该函数分析XML并且为该数据表格创建一些新的HTML-这个HTML将被放置到"grid"
标签中。

  该页面背后的代码显示于列表7。代码中的page_load启动该工作,然后用数据请求页面的URL设置隐藏的输入字段。

  这个get_data.aspx页面使用一个请求ID并且返回一个当前数据集合的XML描述。该页面代码显示于下:

//get_data.aspx
<%@ Page language="c#" Codebehind="get_data.aspx.cs"
AutoEventWireup="false" Inherits="background.get_data" %>

  显然,在这种情况下后台的代码更为重要。该代码显示于列表8中(详见下载源码),-它首先把响应的内容类型设置为"text/xml"。如果在浏览器中不存在该AJAX代码,那么就不会从响应中生成一个XML文档。此后,代码得到请求并且要求DataSet生成该XML。然后它稍微改变一下该XML响应来添加"done"字段-这个用于告诉客户请求是否已完成。

  在该页面第一次启动时,它看上去如图6的样子。


图6.仍是查询:这个屏幕快照显示出仍处于查询中的AJAX页面。

  当请求完成时,该浏览器将看起来如图7所示。在用AJAX解决方案时,请记住,在创建代码时,你是在设置最小的浏览器要求-并不是所有的浏览器都能创建一HTTP请求。事实上,只是最近的浏览器才能实现它。理想情况下,你的解决方案应该既为更旧的浏览器提供查询版本支持也为新型浏览器提供一个AJAX版本支持。


图7.完成:这个屏幕快照显示出完成后的AJAX页面。

  六、 小结

  在最有利的情况下,线程也可能存在问题。而在这种情况下,线程可能比平常更难于监控-因为它运行于服务器的后台。当然,即使没有Web客户在监控它,请求仍有可能将继续保持运行。如果这会是一个问题,那么你应该让WEB监控代码用线程化的过程设置一个时间戳。如果该线程化过程发现一段时间后自己还没有被观看,那么它就可以取消自己。

  在.NET中有几种方法可以实现后台处理,而本文的线程方法仅是其中的一种。你也可以用ASP.NET缓存工作,或甚至创建一个真正的后台处理进程。

  通过使用这些不同的技术,你就完全可以把相当耗时的处理等待转变成一种有关过程处理的丰富的回馈式用户体验。
3页,页码:[1] [2] [3] 

上一篇:Word入门动画教程29:对称页边距
下一篇:网页打不开 Windows的Hosts表是祸首
作者:朱先忠编译  来源:天极网 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐