学习ajax(四)(从客户端访问WebService)

前端之家收集整理的这篇文章主要介绍了学习ajax(四)(从客户端访问WebService)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

学习ajax(四)(从客户端访问WebService)

@H_403_3@服务器端释放WebService方法

@H_403_3@名词解释

@H_403_3@Ajax技术:异步刷新(javascript)

@H_403_3@Ajax.Net:基于asp.net框架是一个ajax框架(不是微软体统的框架)

@H_403_3@Asp.net Ajax: 微软提供的框架

@H_403_3@编写一个普通的Asp.net webservice

@H_403_3@为WebSrvice类添加自定义属性标记

@H_403_3@-ScriptServiceAttribute

@H_403_3@释放WebService方法

@H_403_3@- 访问级别为public

@H_403_3@-使用WeMethidAttribute

@H_403_3@为页面中ScriptManager(Proxy)引入asmx文件

@H_403_3@客户端访问WebService

@H_403_3@[Namespaces.]ClassName.MethodName

@H_403_3@依次传入参数

@H_403_3@传入一个方法作为成功后的回调函数

@H_403_3@即使没有返回值也会调用回调函数

@H_403_3@ InlineScript=false 将会调用代理

@H_403_3@页面代码


1<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="1_WebServiceFoundation.aspx.cs"Inherits="_1_WebServiceFoundation"%>
2
3<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5<htmlxmlns="http://www.w3.org/1999/xhtml">
6<headrunat="server">
7<title>UntitledPage</title>
8</head>
9<body>
10<formid="form1"runat="server">
11<asp:ScriptManagerID="ScriptManager1"runat="server"ScriptMode="Debug">
12<Services>
13<asp:ServiceReferencePath="WebServiceFoundation.asmx"InlineScript="true"/>
14</Services>
15</asp:ScriptManager>
16
17<inputtype="button"value="GetRandom"onclick="getRandom()"/>
18<inputtype="button"value="GetRangeRandom"onclick="getRandom(50,100)"/>
19
20<scriptlanguage="javascript"type="text/javascript">
21functiongetRandom(minValue,maxValue)
22{
23if(arguments.length!=2)
24{
25Sample.WebServiceFoundation.GetRandom(getRandomSucceeded);
26}

27else
28{
29Sample.WebServiceFoundation.GetRangeRandom(minValue,maxValue,getRandomSucceeded);
30}

31}

32
33functiongetRandomSucceeded(result)
34{
35alert(result);
36}

37</script>
38</form>
39</body>
40</html>
41
@H_403_3@对应的的Webservice


1<%@WebServiceLanguage="C#"Class="Sample.WebServiceFoundation"%>
2
3usingSystem;
4usingSystem.Web;
5usingSystem.Web.Services;
6usingSystem.Web.Services.Protocols;
7usingSystem.Web.Script.Services;
8
9namespaceSample
10{
11[WebService(Namespace="http://tempuri.org/")]
12[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
13[ScriptService]
14publicclassWebServiceFoundation:System.Web.Services.WebService
15{
16[WebMethod]
17publicintGetRandom()
18{
19returnnewRandom(DateTime.Now.Millisecond).Next();
20}

21
22[WebMethod]
23publicintGetRangeRandom(intminValue,intmaxValue)
24{
25returnnewRandom(DateTime.Now.Millisecond).Next(minValue,maxValue);
26}

27}

28}
@H_403_3@客户端访问PageMethod

@H_403_3@服务器端

@H_403_3@只能在aspx页面中定义

@H_403_3@只能那个是公开静态方法

@H_403_3@使用WebMethodAttribute标记

@H_403_3@ScriptManager的EnablePageMethods属性设置为true

@H_403_3@客户端

@H_403_3@通过PageMethods.MethodName 访问

@H_403_3@//得到国际标准时间

@H_403_3@DateTime.UtcNow

@H_403_3@对应代码2

@H_403_3@


1<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="2_PageMethods.aspx.cs"Inherits="_2_PageMethods"%>
2
3<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5<htmlxmlns="http://www.w3.org/1999/xhtml">
6<headrunat="server">
7<title>UntitledPage</title>
8</head>
9<body>
10<formid="form1"runat="server">
11<asp:ScriptManagerID="ScriptManager1"runat="server"EnablePageMethods="true"/>
12
13<inputtype="button"value="GetCurrentTime"onclick="getCurrentTime()"/>
14
15<scriptlanguage="javascript"type="text/javascript">
16functiongetCurrentTime()
17{
18PageMethods.GetCurrentTime(getCurrentTimeSucceeded);
19}

20
21functiongetCurrentTimeSucceeded(result)
22{
23alert(result);
24}

25</script>
26</form>
27</body>
28</html>
29

1usingSystem;
2usingSystem.Data;
3usingSystem.Configuration;
4usingSystem.Collections;
5usingSystem.Web;
6usingSystem.Web.Security;
7usingSystem.Web.UI;
8usingSystem.Web.UI.WebControls;
9usingSystem.Web.UI.WebControls.WebParts;
10usingSystem.Web.UI.HtmlControls;
11usingSystem.Web.Services;
12
13publicpartialclass_2_PageMethods:System.Web.UI.Page
14{
15protectedvoidPage_Load(objectsender,EventArgse)
16{
17
18}

19
20[WebMethod]
21publicstaticDateTimeGetCurrentTime()
22{
23returnDateTime.UtcNow;
24}

25}

26
@H_403_3@错误处理

@H_403_3@调用时可以提供一个额外的错误回调函数

@H_403_3@包括超时和服务器抛出的异常

@H_403_3@超时智能设置在WebService对象上

@H_403_3@ 设置在PageMethods对象上

@H_403_3@ 无法在每个MethodCall时指定

@H_403_3@Sys.Net.WebServiceError

@H_403_3@复杂数据类型基础

@H_403_3@公有属性或公有Field会被释放和接受

@H_403_3@容器对象

@H_403_3@ 实现IList接口的对象

@H_403_3@ 实现IDictionary接口的对象

@H_403_3@ Key必须是String


1<scriptlanguage="javascript"type="text/javascript">
2
3functiondoubleSalary()
4
5{
6
7//注意怎么传入一个复杂的数据的
8
9varemployee=newObject();
10
11employee.FirstName="Jeffrey";
12
13employee.LastName="Zhao";
14
15employee.Salary=1000;
16
17
18
19ComplexType.DoubleSalary(employee,doubleSalarySucceeded);
20
21}

22
23
24
25functiondoubleSalarySucceeded(result)
26
27{
28
29varmessage=String.format(
30
31"FirstName:{0}\nLastName:{1}\nFullName:{2}\nSalary:{3}",
32
33result.FirstName,
34
35result.LastName,
36
37result.FullName,
38
39result.Salary);
40
41
42
43alert(message);
44
45}

46
47
@H_403_3@客户端代理使用细节

@H_403_3@函数调用完整性

@H_403_3@Invoke(ar1,…,argN,onSucceded,onFailed,userContext)

@H_403_3@回调函数完整性

@H_403_3@onSucceeded(result,userContext,methodName)

@H_403_3@onFailed(result,methodName)

@H_403_3@WebService级别默认属性

@H_403_3@-timeout

@H_403_3@-defaultUserContext

@H_403_3@-defaultSucceededCallback

@H_403_3@-defaultFailedCallback

猜你在找的Ajax相关文章