探索AJAX中的消息传输模式(一)
2008-06-23 18:28
323 查看
在我们使用AJAX的应用中,消息传输有那些方式呢?纯文本、带HTML的文本、XML、JSON?还有???在许多情况下,纯文本的消息传输就足够了。例如,要传输一个用户名,用户密码,或是用户联系方法(PHONE,EMAIL,MSN)等,通常都是以文本的形式传输的。又比如复杂点的数据信息,表格、对象或者是???,这样我们可以使用XML或是JSON来格式化数据后进行传输。
有这样一个AJAX的应用场合,提供一系列的标签连接,让用户任意选择,浏览器向服务器发送请求查询得到想要的数据信息。下面就以这个应用讨论下消息传输。
一、普通的文本消息传输
建立一ASP.NET AJAX应用程序,先为AJAXMessageText.aspx页面做好简单的布局准备,我们采用HyperLink控件做为导航连接,放置在一个table里,并设置一单元格作为数据显示区,设置其作为服务器控件运行(runat="server"),如下图示:
<asp:HyperLink ID="hlAjax" runat="server" Text="AJAX" NavigateUrl="JavaScript:void(0);" />
2 <asp:HyperLink ID="hlAspnet" runat="server" Text="ASP.NET" NavigateUrl="JavaScript:void(0);" />
3<asp:HyperLink ID="hlCastle" runat="server" Text="Castle" NavigateUrl="JavaScript:void(0);" />
4<asp:HyperLink ID="hlService" runat="server" Text="WebService" NavigateUrl="JavaScript:void(0);" />
5<asp:HyperLink ID="hlHtml" runat="server" Text="Html" NavigateUrl="JavaScript:void(0);"/>
6<td runat="server" colspan="2" rowspan="5" style="background-color: #00ffff; text-align: left" valign="top" id="resultText">
用户通过点击HyperLink控件,客户端向服务器发送请求,返回的数据可能来自不同的地方(数据库,XML,普通的文件.....),这里以Message类来封装这些数据,详细代码定义如下:
public class Message
5[WebService(Namespace = "http://tempuri.org/")]
2[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
3[ScriptService]
4<asp:ScriptManager ID="ScriptManager1" runat="server">
2 <Services>
3 <asp:ServiceReference Path="MessageWebService.asmx" />
4 </Services>
5</asp:ScriptManager>
在客户端,通过ASP.NET AJAX对JavaScript的扩展,我们可以很方便的得到各个控件的引用,以及调用WebService方法,设置回调函数来处理返回值,下面是客户端JS的完整代码:
1<script type="text/javascript">
2 var hlAjax;
3 var hlAspnet;
4 var hlCastle;
5 var hlService;
6 var hlHtml;
7 var resultText;
8
9 //初始化控件引用及事件
10 function pageLoad()
11
27 function onClick(eventElement)
28
43 //回调函数
44 function onGetTextMessageCallback(text)
45 </script>
上述中,通过AJAX所提供的$get()方法获取到各控件的客户端引用,并通过$addHandler()方法为其添加了客户端事件,注意有个HTML的连接,这里我们追逐到Message类里:
1str = new StringBuilder();
2str.Append("<span style="+"font-weight:bold;font-size:20;color:Red;>");
3str.Append("带有HTML的字符串,返回此字符串,所拥有的样式等都可以得到解析!");
4str.Append("</span>");
5HTML = str.ToString();
类里所封装的html对应的字符传是带有css样式及html标识的字符串,返回这个html字符串那客户端是否能得到解析??答案是肯定的,这里只是做到了用户点击相应的连接就发送请求到服务器,要使这个应用完善,我们还得为这个应用初始化一个显示值:
1public partial class AjaxMessageText : System.Web.UI.Page
2public class DataAccess
2[WebMethod]
2public string GetEmployees(string orderBy, int manxRows)
3//回调函数
2function onXmlMessageCallback(result)
3
3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5<html xmlns="http://www.w3.org/1999/xhtml" >
6<head runat="server">
7 <title>无标题页</title>
8</head>
9<body>
10 <form id="form1" runat="server">
11 <asp:ScriptManager ID="ScriptManager1" runat="server">
12 <Services>
13 <asp:ServiceReference Path="MessageWebService.asmx" />
14 </Services>
15 </asp:ScriptManager>
16 以MSSQL 2000里的示例数据库Northwind里的Employees表为例<br />
17 所要显示的列
18
19 方式字段 提取记录行数<br />
20 <asp:CheckBox ID="cbID" runat="server" Text="ID" />
21
22 <asp:CheckBox ID="cbLastName" runat="server" Text="LastName" />
23
24 <asp:CheckBox ID="cbCity" runat="server" Text="City" />
25
26 <asp:CheckBox ID="cbCountry" runat="server" Text="Country" />
27
28 <asp:DropDownList ID="ddlOrder" runat="server">
29 <asp:ListItem Value="EmployeeID" Text="ID"></asp:ListItem>
30 <asp:ListItem Value="LastName" Text="LastName"></asp:ListItem>
31 <asp:ListItem Value="City" Text="City"></asp:ListItem>
32 <asp:ListItem Value="Country" Text="Country"></asp:ListItem>
33 </asp:DropDownList>
34 <asp:DropDownList ID="ddlRows" runat="server">
35 <asp:ListItem>1</asp:ListItem>
36 <asp:ListItem>2</asp:ListItem>
37 <asp:ListItem>3</asp:ListItem>
38 <asp:ListItem>5</asp:ListItem>
39 <asp:ListItem>8</asp:ListItem>
40 <asp:ListItem>10</asp:ListItem>
41 </asp:DropDownList>
42
43 <input id="buttonGO" style="width: 53px" type="button" value="GO" />
44 <hr />
45 <div id="resultXml"></div>
46
47 </form>
153</body>
154</html>
155
文章中有部分内容我作了修改,在原文中加入了示例分析。希这篇文章对大家有所帮助,要更深入的学习AJAX是数据传输请查阅其他相关书籍或资料。欢迎大家拍砖指正,谢谢。
-------------------------------------------------------------------------------------------------------------
参考资源:www.dofactory.com
相关文章:探索AJAX中的消息传输模式(二)
有这样一个AJAX的应用场合,提供一系列的标签连接,让用户任意选择,浏览器向服务器发送请求查询得到想要的数据信息。下面就以这个应用讨论下消息传输。
一、普通的文本消息传输
建立一ASP.NET AJAX应用程序,先为AJAXMessageText.aspx页面做好简单的布局准备,我们采用HyperLink控件做为导航连接,放置在一个table里,并设置一单元格作为数据显示区,设置其作为服务器控件运行(runat="server"),如下图示:
<asp:HyperLink ID="hlAjax" runat="server" Text="AJAX" NavigateUrl="JavaScript:void(0);" />
2 <asp:HyperLink ID="hlAspnet" runat="server" Text="ASP.NET" NavigateUrl="JavaScript:void(0);" />
3<asp:HyperLink ID="hlCastle" runat="server" Text="Castle" NavigateUrl="JavaScript:void(0);" />
4<asp:HyperLink ID="hlService" runat="server" Text="WebService" NavigateUrl="JavaScript:void(0);" />
5<asp:HyperLink ID="hlHtml" runat="server" Text="Html" NavigateUrl="JavaScript:void(0);"/>
6<td runat="server" colspan="2" rowspan="5" style="background-color: #00ffff; text-align: left" valign="top" id="resultText">
用户通过点击HyperLink控件,客户端向服务器发送请求,返回的数据可能来自不同的地方(数据库,XML,普通的文件.....),这里以Message类来封装这些数据,详细代码定义如下:
public class Message
5[WebService(Namespace = "http://tempuri.org/")]
2[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
3[ScriptService]
4<asp:ScriptManager ID="ScriptManager1" runat="server">
2 <Services>
3 <asp:ServiceReference Path="MessageWebService.asmx" />
4 </Services>
5</asp:ScriptManager>
在客户端,通过ASP.NET AJAX对JavaScript的扩展,我们可以很方便的得到各个控件的引用,以及调用WebService方法,设置回调函数来处理返回值,下面是客户端JS的完整代码:
1<script type="text/javascript">
2 var hlAjax;
3 var hlAspnet;
4 var hlCastle;
5 var hlService;
6 var hlHtml;
7 var resultText;
8
9 //初始化控件引用及事件
10 function pageLoad()
11
27 function onClick(eventElement)
28
43 //回调函数
44 function onGetTextMessageCallback(text)
45 </script>
上述中,通过AJAX所提供的$get()方法获取到各控件的客户端引用,并通过$addHandler()方法为其添加了客户端事件,注意有个HTML的连接,这里我们追逐到Message类里:
1str = new StringBuilder();
2str.Append("<span style="+"font-weight:bold;font-size:20;color:Red;>");
3str.Append("带有HTML的字符串,返回此字符串,所拥有的样式等都可以得到解析!");
4str.Append("</span>");
5HTML = str.ToString();
类里所封装的html对应的字符传是带有css样式及html标识的字符串,返回这个html字符串那客户端是否能得到解析??答案是肯定的,这里只是做到了用户点击相应的连接就发送请求到服务器,要使这个应用完善,我们还得为这个应用初始化一个显示值:
1public partial class AjaxMessageText : System.Web.UI.Page
2public class DataAccess
2[WebMethod]
2public string GetEmployees(string orderBy, int manxRows)
3//回调函数
2function onXmlMessageCallback(result)
3
3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5<html xmlns="http://www.w3.org/1999/xhtml" >
6<head runat="server">
7 <title>无标题页</title>
8</head>
9<body>
10 <form id="form1" runat="server">
11 <asp:ScriptManager ID="ScriptManager1" runat="server">
12 <Services>
13 <asp:ServiceReference Path="MessageWebService.asmx" />
14 </Services>
15 </asp:ScriptManager>
16 以MSSQL 2000里的示例数据库Northwind里的Employees表为例<br />
17 所要显示的列
18
19 方式字段 提取记录行数<br />
20 <asp:CheckBox ID="cbID" runat="server" Text="ID" />
21
22 <asp:CheckBox ID="cbLastName" runat="server" Text="LastName" />
23
24 <asp:CheckBox ID="cbCity" runat="server" Text="City" />
25
26 <asp:CheckBox ID="cbCountry" runat="server" Text="Country" />
27
28 <asp:DropDownList ID="ddlOrder" runat="server">
29 <asp:ListItem Value="EmployeeID" Text="ID"></asp:ListItem>
30 <asp:ListItem Value="LastName" Text="LastName"></asp:ListItem>
31 <asp:ListItem Value="City" Text="City"></asp:ListItem>
32 <asp:ListItem Value="Country" Text="Country"></asp:ListItem>
33 </asp:DropDownList>
34 <asp:DropDownList ID="ddlRows" runat="server">
35 <asp:ListItem>1</asp:ListItem>
36 <asp:ListItem>2</asp:ListItem>
37 <asp:ListItem>3</asp:ListItem>
38 <asp:ListItem>5</asp:ListItem>
39 <asp:ListItem>8</asp:ListItem>
40 <asp:ListItem>10</asp:ListItem>
41 </asp:DropDownList>
42
43 <input id="buttonGO" style="width: 53px" type="button" value="GO" />
44 <hr />
45 <div id="resultXml"></div>
46
47 </form>
153</body>
154</html>
155
文章中有部分内容我作了修改,在原文中加入了示例分析。希这篇文章对大家有所帮助,要更深入的学习AJAX是数据传输请查阅其他相关书籍或资料。欢迎大家拍砖指正,谢谢。
-------------------------------------------------------------------------------------------------------------
参考资源:www.dofactory.com
相关文章:探索AJAX中的消息传输模式(二)
相关文章推荐
- 探索AJAX中的消息传输模式(一)
- 探索AJAX中的消息传输模式(二)
- 探索AJAX中的消息传输模式(二)
- 探索AJAX中的消息传输模式(一)
- 在流模式下利用消息头传输带外信息
- 理解JMS规范中消息的传输模式和消息持久化
- 理解JMS规范中消息的传输模式和消息持久化
- 理解JMS规范中消息的传输模式和消息持久化
- 消息映射深度探索(4):职责链模式 - 使用虚函数替换映射表
- 理解JMS规范中消息的传输模式和消息持久化
- 用spring搭建微信公众号开发者模式下服务器处理用户消息的加密传输构架(java)
- WCF如何克服HTTP传输协议的局限提供对不同消息传输模式的实现
- 关于AJAX类库实现模式的探索
- 理解JMS规范中消息的传输模式和消息持久化
- 理解JMS规范中消息的传输模式和消息持久化
- Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。
- AJAX 异步传输的WEB模式
- 设计模式observer在ajax中的一个应用,解决页面onload函数同一时间只有一个可以用
- Ajax 和 XML: 五种常见 Ajax 模式
- ajax-3种数据传输的实现方法(使用jQuery)