Jwin
摘要:做到无刷新获取数据,这样的页面确实能给用户很好的体验.

最近听说了Ajax技术,了解到其能够做到不刷新页面获取数据的效果。这让我想起了去年刚工作时,本人接到的第一个任务就是研究如何无刷新页面获取数据,当时游荡CSDN,也只是接触了点皮毛,用xmlhttp实现了简单效果。

如今看到了博客园上teddy的文章,便想进行更深入的研究。我于是下载了teddy发布的AjaxHelper0.7版本,按照其范例进行了实践。

AjaxHelper有.NET和Flat两种版本,前者只能用于Asp.Net,Flat版本可以用于任何Web开发环境。DotNet版本必须用UserControl来返回回调的内容显示,可以使用ASP.Net内置的各种Web控件和数据绑定机制;Flat版则直接用网页来返回回调的内容显示,当然也可以使用特定语言的任意的数据显示和绑定能力。

因为我的项目开发都是用ASP.NET的,所以我选择的是AjaxHelper DotNET版本。其实其里面的核心内容还是js文件夹里的AjaxHelper.js和Form.js两个文件,我并没有使用其dll组件。

这个版本在AjaxHelper.js文件内声名了var AjaxProxyUrl = new String(\'Ajax.aspx\');因此Ajax.aspx页面是一定要有的,这个页面是起一个表单的代理作用,其内只有一个
Runat=Server的空的HtmlForm——AjaxCallBackForm,在后台代码中简单地实现了往该Form中载入用户控件的方法。

这个用户控件就是ascx后缀的页面文件,我将其放在ctrl目录下,如CommDataList.ascx

在CommDataList.ascx上只需放一个Label,其后台代码中实现根据传入的QueryString,访问数据库获得数据,然后将数据以字符串的形式赋给Lable的Text属性,这样CommDataList.ascx页面上就有了想要展现给前台的HTML数据了。

使整个页面跑起来的主要靠Javascript,并不需要再在页面后台写程序。

在需要调用AjaxHelper的页面,链接入那两个js文件——

以下是代码片段:
<script language="javascript" src="js/Form.js" type="text/javascript"></script>
<script language="javascript" src="js/AjaxHelper.js" type="text/javascript"></script>

一定要往该页面的body标签写onload事件——<body onload="AjaxHelper.OnPageLoad()">

还要在页面添加展现数据的控件—— 一般ASP.NET下都是用Panel。
如添加一个<asp:Panel id="DataListPanel" runat="server"></asp:Panel>

然后就是在按钮的事件,让其调用Ajax的方法——

AjaxHelper.Updater2(ajaxTemplate, output, params, onComplete)注:

 ajaxTemplate  获取数据的用户控件:ctrl\CommDataList.ascx
 output  数据输出到页面的控件:DataListPanel
 params  需要传给CommDataList.ascx的QueryString参数:id=1&name=wayky
 onComplete  数据载入完成后的处理页面content的方法名(可选)

 

因此,我在按钮的onClick事件上(前提是该按钮是没有Runat=Server的button),添加这样的方法

以下是代码片段:
onclick="if(checkInput()){AjaxHelper.Updater2(\'ctrl\CommDataList.ascx\', \'DataListPanel\', \'id=1&name=wayky\')}"

checkInput()是用js写的检查用户输入是否有效的验证方法,返回True或False。

经过实践,当要载入大量的数据时,页面可以做到不刷新,只有Panel控件所在的区域出现变化,如
刚去访问数据时,Panel的内容是Loading,而当数据获取完成了,Panel里就展示了所有的数据HTML内容。这个效果能给用户很好的体验。

Ajax因为主要是用JavaScript实现的,所以只要是分布式应用开发都可以采用,Flat版本,适用于CGI,ASP,JSP,PHP等各种版本,只是在Flat版本中的ajaxTemplate参数必须是完整的网页路径,包括扩展名,然后就能将该引用页面获取的数据展现到想要展示的页面上。

ASP可参看本站的演示——>http://waykysoft.com/testajax.asp 

下载AJaxHelper的链接为:

以下是引用片段:
AjaxHelper_DotNet_v0.7.zip
AjaxHelper_Flat_v0.7.zip


此日志共有( 3 )个评论

分类:

技术点:

相关文章: