1.一个简单的例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>无标题页</title> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server"> <Services> <asp:ServiceReference Path="WebServiceFoundation.asmx" InlineScript="true" /> </Services> </asp:ScriptManager> <input type="button" value="Get Random" οnclick="getRandom()" /> <input type="button" value="Get Range Random" οnclick="getRandom(50, 100)" /> <mce:script language="javascript" type="text/javascript"><!-- function getRandom(minValue, maxValue) { if (arguments.length != 2) { Sample.WebServiceFoundation.GetRandom(getRandomSucceeded); } else { Sample.WebServiceFoundation.GetRangeRandom(minValue, maxValue, getRandomSucceeded); } } function getRandomSucceeded(result) { alert(result); } // --></mce:script> </div> </form> </body> </html> <%@ WebService Language="C#" Class="Sample.WebServiceFoundation" %> using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Web.Script.Services; namespace Sample { [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ScriptService] public class WebServiceFoundation : System.Web.Services.WebService { [WebMethod] public int GetRandom() { return new Random(DateTime.Now.Millisecond).Next(); } [WebMethod] public int GetRangeRandom(int minValue, int maxValue) { return new Random(DateTime.Now.Millisecond).Next(minValue, maxValue); } } } 2. 对于复杂对象使用的例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> <Services> <asp:ServiceReference Path="ComplexType.asmx" /> </Services> </asp:ScriptManager> <input type="button" value="Double Salary" οnclick="doubleSalary()" /> <input type="button" value="Reverse" οnclick="reverse([1, 2, 3, 4, 5])" /> <input type="button" value="Get Employees" οnclick="getEmployees()" /> <mce:script language="javascript" type="text/javascript"><!-- function doubleSalary() { var employee = new Object(); employee.FirstName = "Jeffrey"; employee.LastName = "Zhao"; employee.Salary = 1000; ComplexType.DoubleSalary(employee, doubleSalarySucceeded); } function doubleSalarySucceeded(result) { var message = String.format( "First Name: {0}/nLast Name: {1}/nFull Name: {2}/nSalary: {3}", result.FirstName, result.LastName, result.FullName, result.Salary); alert(message); } function reverse(array) { ComplexType.Reverse(array, function(result){alert(result);}); } function getEmployees() { ComplexType.GetEmployees(getEmployeesSucceeded); } function getEmployeesSucceeded(result) { for (var name in result) { alert(name + ": " + result[name].Salary) } } // --></mce:script> </form> </body> </html> <%@ WebService Language="C#" Class="ComplexType" %> using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Collections.Generic; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.Web.Script.Services.ScriptService] public class ComplexType : System.Web.Services.WebService { [WebMethod] public Employee DoubleSalary(Employee employee) { employee.Salary *= 2; return employee; } [WebMethod] public List<int> Reverse(List<int> list) { list.Reverse(); return list; } [WebMethod] public IDictionary<string, Employee> GetEmployees() { Dictionary<string, Employee> result = new Dictionary<string, Employee>(); Employee emp1 = new Employee(); emp1.FirstName = "Jeffrey"; emp1.LastName = "Zhao"; emp1.Salary = 1000; result[emp1.FullName] = emp1; Employee emp2 = new Employee(); emp2.FirstName = "Tom"; emp2.LastName = "Chen"; emp2.Salary = 2000; result[emp2.FullName] = emp2; return result; } } Employee类: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; /// <summary> /// Summary description for Employee /// </summary> public class Employee { public string FirstName; public string LastName; public int Salary; public string FullName { get { return this.FirstName + " " + this.LastName; } } }