【IT168技术文档】
为了增强用户体验,也为了减少服务器端的回发操作,使得服务器端与客户端之间的交互越来越被广泛使用,各种AJAX产品的出现也正是顺应了这股潮流。
在这里,我也不讲什么深奥的东西,只是把自己在开发当中遇到的一些实用的东西拿出来跟大家共享,希望不会有重的东西在。
案例:
现在我希望能够从数据库里读出一个数据列表,再把这个列表初始化到客户端的一个数组中去。这是一个典型的客户端与服务器端的交互,相信大家一看到这个就会有好多种方法来实现,在这里我就帮大家稍微整理一下。
解决方法:
1、通过AJAX实现
很多人可能会选择这种方法,确实用这种方法很方便,对asp.net 中的ajax来说,就可以直接从服务器端返回一个数组了。
2、在客户端用服务器端标记循环实现
这种方法,相信以前如果做过ASP的朋友一定比较熟悉,类似于以下代码:
3、用Page.ClientScript中的方法实现<script> var list = []; <% 服务器端循环开始%> list.push(<%循环值%>); <%服务器端循环结束%> </script>
在客户端先定义以下方法:
在服务器端:<script> var list = []; function AddObject(object) { list.push(object); } </script>
4、我觉得这一个方法比较巧妙,我也经常使用。for循环 { Page.ClientScript.RegisterStartupScript(this.GetType(), "dd", "AddObject("+循环值+");", true); }
客户端:
注意,在<script></script>标记中加入了一个服务器控件, <asp:Literal ID="userObjectUtil" runat="server"></asp:Literal>,微软的解析是够强的,放在这里在服务器端照样能够使用。<script> var list = []; function AddObject(object) { list.push(object); } <asp:Literal ID="userObjectUtil" runat="server"></asp:Literal> </script>
服务器端:
本人比较常用的就这么几种,不知道大家还有哪些好的方法。因为像这种应用,应该是越简单越好,没有必要搞得比较复杂。StringBuilder sb = new StringBuilder(200); for循环 { sb.AppendFormat("AddObject('{0}');\n", 循环值); } userObjectUtil.Text = sb.ToString();