ajax——客户端访问webservice基本使用方式

之前学习aps.net的时候学习过使用服务器端去访问webservice的方法,当时实现了一个例子:web server模拟网上购物,今天学习asp.net
ajax的时候学习到了客户端直接访问webserivice的方式。这种客户端直接访问webserver的方式体现了ajax的异步刷新数据的思想。

客户端访问webservice基础

webservice端的创建步骤:

1.创建一个aps.net webservice

2.加入标记[scriptService]

3.写webservice的方法,并加入标记[webMethod]进行释放服务器方法

客户端访问webservice的步骤

1.在插入的的scrptmanager引入asmx文件。

2.传入参数

3.写一个方法作为成功的回调函数。

4.也可以写一个错误处理作为失败的回调函数。

下面是自己写的一个小例子:大概需求是在客户端输入两个数,去调用webservic端的除法的方法,如果成功输出运行结果,如果错误输入输出错误的具体内容。(特别简单)

webservic端

   public class divsion : System.Web.Services.WebService
    {

        [WebMethod]
        public int getDivison(int a, int b)//除法运算
        {
            return a / b;
        }
        [WebMethod]
        public int timeOut()
        {
            Thread.Sleep(5000);  //设置睡眠时间
            return 0;
        }
    }

客户端

<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
            <Services>
                <asp:ServiceReference Path="divsion.asmx" />
            </Services>
        </asp:ScriptManager>
        <script language="javascript" type="text/javascript">
            //提供默认的错误处理回调函数,这个函数是在后面的所有的方法加载之后,才开始调用这个函数,所以,failedCallback的生命起始于最后的
            //WebApplication1.divsion.set_defaultFailedCallback(failedCallback);
            //设置为1秒后超时
            WebApplication1.divsion.set_timeout(1000);
            function getDivsion()
            {
                var a = document.getElementById("Text1").value;
                var b = document.getElementById("Text2").value;
                WebApplication1.divsion.getDivison(a,b,getSuccess,getFailed);
            }
            function getSuccess(result)   //成功后回调函数
            {
                alert(result);
            }
            function getFailed(error)  //错误处理
            {
                var message = String.format(
                  	"Timeout: {0}\nMessage: {1}\nExceptionType: {2}\nStackTrace: {3}",
					error.get_timedOut(),
					error.get_message(),
					error.get_exceptionType(),
					error.get_stackTrace());
                alert(message);
            }
        </script>

    </div>
    </form>
    <input id="Text1" type="text" />
    除以
    <input id="Text2" type="text" />
    <input id="Button1" type="button" value="等于" onclick="getDivsion()"/>
</body>

运行结果

输入两个整数的时候:

除数为0的时候:会抛出错误处理

客户端访问pageMethod基础

这种方式与前一种的不同在于:

1.这种方式只能在将调用的方法,放到服务器端(aspx的后台代码)。

2.只能公开静态方法,不能获取页面的具体控件内容

3.使用webmethod标记,进行释放。

客户端访问服务器端的步骤:

1.为页面引入scrptmanager,并修改srciptMangeer中设置enablepagemethods=true。

2.通过pageMethods.MethodName访问。

3.写一个方法作为成功或失败的回调函数。

下面是一个简单的小例子:大概需求是:在服务器端写入获取当前时间的方法,客户端调用这个方法。

服务器端

	[WebMethod]
	public static DateTime GetCurrentTime()
	{
        //根据客户端所在的时间来显示
        return DateTime.UtcNow;
	}

客户端

/head>
<body>
    <form id="form1" runat="server">
    <%--EnablePageMethods方法赋值不可少--%>
		<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />

		<input type="button" value="Get Current Time" onclick="getCurrentTime()" />

		<script language="javascript" type="text/javascript">
			function getCurrentTime() {
			    //getCurrentTimeSucceeded为回调函数
				PageMethods.GetCurrentTime(getCurrentTimeSucceeded);
			}

			function getCurrentTimeSucceeded(result)
			{
				alert(result);
			}
		</script>
    </form>
</body>

客户端代理使用细节

函数调用的完整签名

Invoke(arg1,..argn,onSuccessed,onFailed,userContext)

arg1:参数

onSuccessed:成功调用的函数

onFailed:失败调用的函数,或者是错误处理的函数。

userContext:调用方法,接受方法继续处理方法,是不同的方法,所以传参就可以把传递的参数放到usercontext中

回调函数完整签名

onSuccessed/onFailed(result,UserContext,methodName)

WebService级别默认属性

Timeout:超时

Defaultusercontext:默认的usercontext

Defaultsuccessededcallback:默认成功回调函数

Defaultfailedcallback:默认的错误处理方法

总结:

这一部分刚刚开始学习,学起来有点慢,但是对这一块自己还是有很大的兴趣的,因为异步传输确实是提高了效率很强大。当然通过这部分的客户端访问webserivice的学习,也越来越感觉到了asp.net ajax框架的强大。

ajax——客户端访问webservice基本使用方式

时间: 2024-07-31 12:31:32

ajax——客户端访问webservice基本使用方式的相关文章

ASP.NET MVC中使用ASP.NET AJAX异步访问WebService

使用过ASP.NET AJAX的朋友都知道,怎么通过ASP.NET AJAX在客户端访问WebService,其实在ASP.NET MVC中使用ASP.NET AJAX异步访问WebService 也没什么大的差别. 在ASP.NET应用程序里使用ASP.NET AJAX访问WebService通常都是通过ScriptMananger引入WebService生成客户端代理的方法,同时也可以使用Microsoft Ajax Library来完成.本文将介绍在ASP.NET MVC中使用ASP.NE

ajax的访问 WebService 的方法

转自原文 ajax的访问 WebService 的方法 如果想用ajax进行访问 首先在web.config里进行设置 添加在 <webServices> <protocols> <add name= "HttpPost" /> <add name= "HttpGet" /> </protocols> </webServices> <system.web>节点之下 这样就是可以通过u

使用AXIS2为Client访问WebService

使用AXIS2,可以方便的构建WebService的服务器端,也可以很方便的作为Cilent,来访问别的WebService. 下面根据工作中的经历,整理了一下,作为Cilent访问WebService的要点. 根据Axis2的官方文档,Client的DataBinding方式有3种,最简单的好像是ADB,那么我就选用的ADB. 1.普通方式(http 不通过proxy,对方也没有利用SSL) // Generate Client RPCServiceClient serviceClient =

16Exchange Server 2010跨站点部署-内部客户端访问配置

9.内部客户端访问 9.1 OWA方式访问 OWA的访问默认情况下是使用的HTTPS协议.也可以手动改为允许使用HTTP协议访问,基于安全性考虑,建议使用HTTPS.Exchange典型安装完成后即可以在内部直接使用Exchange OWA功能. 可以在这里修改SSL设置 取消要求SSL即可使用HTTP访问,这里不作测试 9.2 Outlook MAPI方式访问 如果是环境允许,强烈建议使用MAPI来访问邮箱,使用MAPI需要用到outlook客户端,在域环境下MAPI模式访问邮箱能够提高更大的

webservice访问的几种方式

今天在对接的时候客户用到了webservice,用wsimport生成本地代理的方式可以访问ws服务,但是想的完整的总结一下ws的几种调用方式. 发布服务的IP地址是:192.168.15.195 客户端访问ws服务的IP是: 1.发布ws服务: 参考:https://www.cnblogs.com/qlqwjy/p/9644078.html applicationContext.xml <?xml version="1.0" encoding="UTF-8"

二进制安装kubernetes1.14.1-pod配置清单之客户端访问方式03

查看pod配置清单 参考: (https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.14/) [[email protected] ~]# kubectl explain pods.metadata.[.........] [[email protected] ~]# kubectl explain pods.spec.[........] 开放端口+ip地址访问:此处的一旦绑定,只能指定的ip或者端口访问 [[emai

js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)

最近做了一个项目,需要用子域名调用主域名下的一个现有的功能,于是想到了用jsonp来解决,在我们平常的项目中不乏有这种需求的朋友,于是记录下来以便以后查阅同时也希望能帮到大家,需要了解的朋友可以参考下 很庆幸,我又见到了末日后新升的太阳,所以我还能在这里写文章,言归正传哈,最近做了一个项目,需要用子域名调用主域名下的一个现有的功能,于是想到了用jsonp来解决,在我们平常的项目中不乏有这种需求的朋友,于是记录下来以便以后查阅同时也希望能帮到大家. 什么是JSONP协议? JSONP即JSON w

SQL Server 2008 R2 根据WSDL访问WebService

学习整理:WebService学习整理(一)--客户端三种调用方式整理 自我概括: WebService 通过HTTP通讯,数据以XML格式传输 SOAP 是访问协议(注明访问WebService的url,方法名,参数,用户名/密码等) WSDL 是WebService描述语言(这个服务要怎样调用) .asmx 是.Net WebService后缀名(也有描述服务调用的方法,并且比较容易看懂), .asmx?wsdl 也可以查看服务的描述语言 正文: 项目需求需要对接一个非.Net 开发的Web

使用eclipse自带的工具访问webService

通过图形化界面的方式调用webservice 工具1:webservice explorer 工具2:tcp/ip Monitor 可以拦截webservice客户端与webservice 服务端进行交互的整个过程以及数据传输的格式.. 相当于中间代理,图示如下: window->showView->other->myEclipse Common Tcp/ip 进入工具之后需要进行配置.. 在浏览器换成代理端口来访问wsdl,效果和正常访问一样 通过第一种访问方式来测试,可以通过工具获取