ajax——客户端访问webservice基本使用方式
之前学习aps.net的时候学习过使用服务器端去访问webservice的方法,当时实现了一个例子:web server模拟网上购物,今天学习asp.net ajax的时候学习到了客户端直接访问webserivice的方式。这种客户端直接访问webserver的方式体现了ajax的异步刷新数据的思想。 客户端访问webservice基础
下面是自己写的一个小例子:大概需求是在客户端输入两个数,去调用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基础
下面是一个简单的小例子:大概需求是:在服务器端写入获取当前时间的方法,客户端调用这个方法。 服务器端
[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> 客户端代理使用细节
Timeout:超时 总结:这一部分刚刚开始学习,学起来有点慢,但是对这一块自己还是有很大的兴趣的,因为异步传输确实是提高了效率很强大。当然通过这部分的客户端访问webserivice的学习,也越来越感觉到了asp.net ajax框架的强大。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |