在微软Ajax框架中异步调用WebService(JavaiScript中调用)

简介:

在园子里看到关于Ajax调用WebService文章不再少数,也写了几个调用的实例,过两天来看感觉理不清思路,今天加以小结:

WebService没有什么用户界面,只对外公开调用的方法,专注业务逻辑的实现,这恰好和ASP.NET AJAX客户端编程模型所倡导的“将表现层和业务逻辑层彻底分开”的理念不谋而合。

微软的Ajax框架用来处理客户端的用户界面,实现于用户的具体交互,而服务器端只关心数据的处理,而无需理会客户端表现样式的变化。Ajax本身的异步通信层所自动生成的Web Service客户端访问代理,WebService同样也可以借用。

做出一个实例如下:业务需求—在界面的文本框中输入用户名,调用服务器端的WebService中方法返回服务器端的时间并问候该用户.显示在界面上:

 

输入chenkaige后显示客户端的结果:

 

调用的WebService代码如下:

其中在WebService中编写代码前必须要导入System.Web.Script.Services空间支持,同时类前加上[ScriptService]的特性(为了生成客户端调用代理)

 
  1. using System;  
  2. using System.Web;  
  3. using System.Collections;  
  4. using System.Web.Services;  
  5. using System.Web.Services.Protocols;  
  6. using System.Web.Script;  
  7. using System.Web.Script.Services;  
  8.  
  9.  
  10. /**//// <summary>  
  11. /// 新建一个WebService用来实现通过Ajax的特殊异步通信层来调用该自定义方法  
  12. /// Author:chenkai    Timer:2009年1月27日23:01:35  Document: A simple Demo  
  13. /// </summary>  
  14. [WebService(Namespace = "http://tempuri.org/")]  
  15. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  16. [ScriptService]//为了Asp.NET Ajax生成WebService客户端调用代理  进而允许我们再javascript中调用WebService中自定义方法  
  17. public class WebService : System.Web.Services.WebService {  
  18.  
  19.     public WebService () {  
  20.  
  21.         //如果使用设计的组件,请取消注释以下行   
  22.         //InitializeComponent();   
  23.     }  
  24.      /**//// <summary>  
  25.      /// 自定义一个Webservice方法实现 返回一个重新拼接的字符串  
  26.      /// </summary>  
  27.      /// <param name="clintname">客户端字符窜</param>  
  28.      /// <returns>服务端修改后的字符串</returns>  
  29.     [WebMethod]  
  30.     public string ClintSayHello(string clintname)  
  31.     {  
  32.         return DateTime.Now.ToString() + "Good Night!" + clintname;  
  33.     }  
  34.       

客户端调用代码:

 
  1. --调用WebService的JavaScript  
  2.     <script type="text/javascript"> 
  3.       //自定义通过javaScript调用服务器端的WebService中的自定义方法  
  4.       function ScriptFunction()  
  5.      {  
  6.          //获得文本框中输入的ClintName  
  7.          var getname=document.getElementById("clintname").value;  
  8.          alert(getname);  
  9.          //开始调用Webservice同时还调用一个客户端自定义的回调函数  
  10.          //调用语法是[NameSpace].[ClassName].[MethodName](param1, param2 …, callbackFunction)  
  11.          WebService.ClintSayHello(getname,CallBackFun);  
  12.            
  13.      }   
  14.       
  15.      //自定义一个回调函数  
  16.      //该回调函数将在服务器端异步调用成功返回后由ASP.NET AJAX异步通讯层自动调用  
  17.      //回调函数的result参数代表了本次异步调用的返回结果—即调用WebService自定义方法返回结果    
  18.      //其result参数也会由ASP.NET AJAX异步通讯层传递进来,无需任何手工控制   
  19.      function CallBackFun(result)  
  20.      {  
  21.         document.getElementById("DispayResult").innerHTML="<B>"+result+"</B>";  
  22.         alert("Sucess To Transfer Server WebService!");  
  23.      }     
  24.     </script> 
  25.      
  26.    --页面代码:  
  27.       <asp:ScriptManager ID="ScriptManager1" runat="server"> 
  28.          <Services> 
  29.            <asp:ServiceReference Path="WebService.asmx" /> 
  30.          </Services> 
  31.       </asp:ScriptManager> 
  32.         <b>///通过Asp.net Ajax框架再客户端调用WebService中方法  
  33.          <br /> 
  34.          ///Author:chenkai  Timer:2009年1月27日23:52:45</b> 
  35.         <div> 
  36.           InputClintName:<input type="text" id="clintname" /> 
  37.           <input type="button" id="ClintBtnClick" onclick="return ScriptFunction()" value="SendToClint"/> 
  38.         </div> 
  39.         --div层用来显示结果  
  40.         <div id="DispayResult"></div> 

微软Ajax框架中调用WebService的具体步骤如下:

(1)WebService类中导入System.Web.Script.Services命名空间,并在类前添加[ScriptService]属性或者将Web Service类或需要暴露给客户端的Web Service方法添加[ScriptService]属性-根据需要来设定
(2)在页面中的ScriptManager控件中添加对该Web Service的引用
    
(3)在客户端使用如下JavaScript语法调用该Web Service:[NameSpace].[ClassName].[MethodName](param1, param2 ......, callbackFunction) 

(4)为客户端异步调用指定回调函数,在回调函数中接收返回值并进一步处理


本文转自chenkaiunion 51CTO博客,原文链接:http://blog.51cto.com/chenkai/765474


相关文章
|
2月前
|
JSON 资源调度 JavaScript
Vue框架中Ajax请求的实现方式:使用axios库或fetch API
选择 `axios`还是 `fetch`取决于项目需求和个人偏好。`axios`提供了更丰富的API和更灵活的错误处理方式,适用于需要复杂请求配置的场景。而 `fetch`作为现代浏览器的原生API,使用起来更为简洁,但在旧浏览器兼容性和某些高级特性上可能略显不足。无论选择哪种方式,它们都能有效地在Vue应用中实现Ajax请求的功能。
41 4
|
5月前
|
前端开发 Python
Django框架中Ajax GET与POST请求的实战应用
Django框架中Ajax GET与POST请求的实战应用
|
6月前
|
前端开发 JavaScript
ajax框架格式,每个属性的作用
ajax框架格式,每个属性的作用
41 7
|
6月前
|
XML JSON 前端开发
ajax框架格式,每个属性的作用
ajax框架格式,每个属性的作用
37 2
|
6月前
|
XML 开发框架 .NET
C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService
## 第二部分:ADO.NET、XML、HTTP、AJAX、WebService #### 1. .NET 和 C# 有什么区别? .NET(通用语言运行时): ```c# 定义:.NET 是一个软件开发框架,提供了一个通用的运行时环境,用于在不同的编程语言中执行代码。 作用:它为多语言支持提供了一个统一的平台,允许不同的语言共享类库和其他资源。.NET 包括 Common Language Runtime (CLR)、基础类库(BCL)和其他工具。 ``` C#(C Sharp): ```c# 定义: C# 是一种由微软设计的面向对象的编程语言,专门为.NET 平台开发而创建。 作
308 2
|
6月前
|
XML JSON 前端开发
ajax框架格式,每个属性的作用是什么
ajax框架格式,每个属性的作用是什么
|
6月前
|
XML 缓存 JavaScript
jQuery 第十章(jQuery AJAX以及jQuery和其他框架兼容)
jQuery 第十章(jQuery AJAX以及jQuery和其他框架兼容)
50 0
|
6月前
|
缓存 应用服务中间件 数据库
Python Web Service开发及优化
随着互联网的快速发展,Web服务已成为现代技术的核心。Python作为一种功能强大且易于学习的编程语言,在Web服务开发领域占据着重要地位。Python Web服务开发的重要性在于它能够提供高效、可扩展且易于维护的解决方案。本篇博客将探讨如何使用Python的Flask框架、Gunicorn WSGI服务器和Nginx网页服务器来实现高性能的Web服务。
|
6月前
|
XML Java 应用服务中间件
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
90 0
|
6月前
|
Java 应用服务中间件 Spring
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
WebService - Axis2使用services.xml进行开发server与client(未与Spring整合)
147 0