ASP.NET 2.0 AJAX中Webservice调用方法示例
点击次数:22 次 发布日期:2008-11-26 11:44:52 作者:源代码网
|
源代码网推荐 源代码网推荐 版本为AJAX November CTP。 源代码网推荐 源代码网推荐 三个示例分别为: 源代码网推荐 1 带参数的WS方法 源代码网推荐 2 不带参数的WS方法 源代码网推荐 3 参数类型为DataTable的WS方法 源代码网推荐 源代码网推荐 一、WebMethod 源代码网推荐 注意要点: 源代码网推荐 1 WebMethod类需要添加命名空间 Microsoft.Web.Script.Services,此空间需要引用Microsoft.Web.Preview.dll 源代码网推荐 2 类声明加入标签 [ScriptService] 源代码网推荐 3 在Asp.net 2.0里可以直接用DataTable作为返回类型了,但是需要在Web.config文件添加序列化转换器的属性。DataSet、DataTable、DataRow均有转换器 源代码网推荐 源代码网推荐 <system.web.extensions> 源代码网推荐 <scripting> 源代码网推荐 <webServices> 源代码网推荐 <jsonSerialization> 源代码网推荐 <converters> 源代码网推荐 <add name="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview"/> 源代码网推荐 <add name="DataRowConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview"/> 源代码网推荐 <add name="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview"/> 源代码网推荐 </converters> 源代码网推荐 </jsonSerialization> 源代码网推荐 </webServices> 源代码网推荐 </scripting> 源代码网推荐 </system.web.extensions> 源代码网推荐 WEB服务1:WS1 源代码网推荐 源代码网推荐 using System; 源代码网推荐 using System.Web; 源代码网推荐 using System.Collections; 源代码网推荐 using System.Web.Services; 源代码网推荐 using System.Web.Services.Protocols; 源代码网推荐 using Microsoft.Web.Script.Services; 源代码网推荐 using System.Data; 源代码网推荐 /**//// <summary> 源代码网推荐 /// WS1 的摘要说明 源代码网推荐 /// </summary> 源代码网推荐 [WebService(Namespace = "http://tempuri.org/")] 源代码网推荐 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 源代码网推荐 [ScriptService] 源代码网推荐 public class WS1 : System.Web.Services.WebService { 源代码网推荐 源代码网推荐 public WS1 () { 源代码网推荐 源代码网推荐 //如果使用设计的组件,请取消注释以下行 源代码网推荐 //InitializeComponent(); 源代码网推荐 } 源代码网推荐 源代码网推荐 [WebMethod] 源代码网推荐 public string ServerTime() 源代码网推荐 { 源代码网推荐 return String.Format("now: {0}", DateTime.Now); 源代码网推荐 } 源代码网推荐 源代码网推荐 [WebMethod] 源代码网推荐 public DataTable GetDataTable() 源代码网推荐 { 源代码网推荐 DataTable dt = new DataTable("Person"); 源代码网推荐 源代码网推荐 dt.Columns.Add(new DataColumn("Name", typeof(string))); 源代码网推荐 dt.Columns.Add(new DataColumn("LastName", typeof(string))); 源代码网推荐 dt.Columns.Add(new DataColumn("Email", typeof(string))); 源代码网推荐 源代码网推荐 dt.Rows.Add("kui", "he", "hekui168@163.com"); 源代码网推荐 dt.Rows.Add("ren", "chao", "chaoren888@163.com"); 源代码网推荐 源代码网推荐 return dt; 源代码网推荐 } 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 WEB服务2:WS 源代码网推荐 源代码网推荐 using System; 源代码网推荐 using System.Web; 源代码网推荐 using System.Collections; 源代码网推荐 using System.Web.Services; 源代码网推荐 using System.Web.Services.Protocols; 源代码网推荐 using Microsoft.Web.Script.Services; 源代码网推荐 源代码网推荐 /**//// <summary> 源代码网推荐 /// WS 的摘要说明 源代码网推荐 /// </summary> 源代码网推荐 [WebService(Namespace = "http://tempuri.org/")] 源代码网推荐 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 源代码网推荐 [ScriptService] 源代码网推荐 public class WS : System.Web.Services.WebService { 源代码网推荐 源代码网推荐 public WS () { 源代码网推荐 源代码网推荐 //如果使用设计的组件,请取消注释以下行 源代码网推荐 //InitializeComponent(); 源代码网推荐 } 源代码网推荐 源代码网推荐 [WebMethod] 源代码网推荐 [ScriptMethod(UseHttpGet = true)] 源代码网推荐 public string HelloWorld(String query) 源代码网推荐 { 源代码网推荐 string inputString = Server.HtmlEncode(query); 源代码网推荐 if (!String.IsNullOrEmpty(inputString)) 源代码网推荐 { 源代码网推荐 return String.Format("hello, {0}. ", inputString); 源代码网推荐 } 源代码网推荐 else 源代码网推荐 { 源代码网推荐 return "query string is null or empty"; 源代码网推荐 } 源代码网推荐 } 源代码网推荐 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 二、前台页面: 源代码网推荐 注意要点: 源代码网推荐 需要使用的后台WebService的方法均设置在如下位置 源代码网推荐 源代码网推荐 <asp:ScriptManager ID="ScriptManager1" runat="server"> 源代码网推荐 <Services> 源代码网推荐 <asp:ServiceReference Path="~/WS.asmx" /> 源代码网推荐 <asp:ServiceReference Path="~/WS1.asmx" /> 源代码网推荐 </Services> 源代码网推荐 </asp:ScriptManager> 源代码网推荐 Default页面: 源代码网推荐 源代码网推荐 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 源代码网推荐 源代码网推荐 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 源代码网推荐 <html xmlns="http://www.w3.org/1999/xhtml"> 源代码网推荐 <head runat="server"> 源代码网推荐 <title>Untitled Page</title> 源代码网推荐 源代码网推荐 <script language="javascript" type="text/javascript" src="http://www.zzchn.com/edu/20080727/js.js"> 源代码网推荐 </script> 源代码网推荐 源代码网推荐 </head> 源代码网推荐 <body> 源代码网推荐 <form id="form1" runat="server"> 源代码网推荐 <asp:ScriptManager ID="ScriptManager1" runat="server"> 源代码网推荐 <Services> 源代码网推荐 <asp:ServiceReference Path="~/WS.asmx" /> 源代码网推荐 <asp:ServiceReference Path="~/WS1.asmx" /> 源代码网推荐 </Services> 源代码网推荐 </asp:ScriptManager> 源代码网推荐 <div> 源代码网推荐 <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="dd();return false;" /> 源代码网推荐 <div id="time"> 源代码网推荐 </div> 源代码网推荐 <div id="List1"> 源代码网推荐 <asp:DropDownList ID="ddl1" runat="server" Width="187px"> 源代码网推荐 </asp:DropDownList> 源代码网推荐 </div> 源代码网推荐 源代码网推荐 </div> 源代码网推荐 </form> 源代码网推荐 </body> 源代码网推荐 </html> 源代码网推荐 源代码网推荐 三、JavaScript程序: 源代码网推荐 注意要点: 源代码网推荐 AJAX November CTP 需要用 eval() 方法将其转换成一个DataTable对象(并且要裁掉最前面的"("),而AJAX December CTP 支持以下方法转换“Sys.Preview.Data.DataTable.parseFromJson(result)” 源代码网推荐 源代码网推荐 function dd() 源代码网推荐 { 源代码网推荐 WS.HelloWorld( 源代码网推荐 "hekui", 源代码网推荐 function(result) 源代码网推荐 { 源代码网推荐 alert(result); 源代码网推荐 } 源代码网推荐 ); 源代码网推荐 WS1.ServerTime( 源代码网推荐 function(result) 源代码网推荐 { 源代码网推荐 alert(result); 源代码网推荐 var divTime = document.getElementById("time"); 源代码网推荐 divTime.innerHTML = result; 源代码网推荐 } 源代码网推荐 ); 源代码网推荐 WS1.GetDataTable( 源代码网推荐 function(result) 源代码网推荐 { 源代码网推荐 // 获取到下拉框控件 源代码网推荐 var List = document.getElementById("ddl1"); 源代码网推荐 源代码网推荐 //AJAX November CTP 需要用 eval() 方法将其转换成一个DataTable对象(并且要裁掉最前面的"(") 源代码网推荐 var Text= result.dataArray.substring(0,result.dataArray.length -1); 源代码网推荐 var Table = eval( Text); 源代码网推荐 源代码网推荐 //AJAX December CTP 支持以下方法转换 源代码网推荐 // var Table = Sys.Preview.Data.DataTable.parseFromJson(result); 源代码网推荐 源代码网推荐 //清除下拉框原有列表项 源代码网推荐 for (x=List.options.length-1; x > -1; x--) 源代码网推荐 { 源代码网推荐 List.remove(0); 源代码网推荐 } 源代码网推荐 源代码网推荐 //从获取的DataTable添加数据到下拉框列表项 源代码网推荐 for (x=0; x < Table.length; x++ ) 源代码网推荐 { 源代码网推荐 //获取每一行 源代码网推荐 var Row = Table[x]; 源代码网推荐 //创建一个列表项 源代码网推荐 var option = document.createElement("option"); 源代码网推荐 //列表项显示文本赋值 源代码网推荐 option.text = Row.Name + " " + Row.LastName; 源代码网推荐 //列表项选项值赋值 源代码网推荐 option.value = Row.Email; 源代码网推荐 源代码网推荐 //判断浏览器类型,进行项目添加 源代码网推荐 if ( window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) 源代码网推荐 List.add(option); 源代码网推荐 else 源代码网推荐 List.add(option, null); 源代码网推荐 } 源代码网推荐 } 源代码网推荐 ); 源代码网推荐 } 源代码网推荐 示例代码:http://www.cnblogs.com/Files/heekui/AJAXStudy.rar 源代码网推荐 http://www.cnblogs.com/heekui/archive/2007/01/10/616332.html 源代码网推荐 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
