javascript调用WebService - Hello World

WebService既可以大用,也可以小用。
大用可以应用到整个系统,将整个系统设计成SOA(面向服务),小用可以应用到JS。
今天我们就来看一下如何在网页中用JS来调用WebService。

我们举的例子很简单,用 JS调用默认VS2008生成的Hello World服务。
Service的代码如下:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;

namespace BlogNet.WebService
{
    [WebService(Namespace = "http://www.cnblogs.com/davidgu/opservice")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class OpService : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
    }
}

关键部分是JS的代码,首先,我们需要下载一个 webservice.htc,
这个是IE中支持支持JS调用WebService的组件,我们可以在微软网站下载到。
我们将这个文件放在我们网页的同一个目录。
然后,在HTML中,使用CSS的 behavior特性来调用该组件,如下:
<div id="service" style="behavior:url(webservice.htc)" ...>
我们还需要把web service返回的结果放在div的onresult事件里,如下:
<div id="service" style="behavior:url(webservice.htc)" onresult="onWebServiceResult()"></div>
 
需要注意的是:
url连接必须跟上?wsdl后缀,否则会报错。
"
http://localhost:1408/WebService/OpService.asmx?wsdl"

完整代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="testJsCustomer.aspx.cs" Inherits="BlogNet.WebService.testJsCustomer" %>

<!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>javascript调用WebService</title>
    <script type="text/javascript">
    
        var iCallID = null;
        var sUrl = "http://localhost:1408/WebService/OpService.asmx?wsdl";
        
        function getHelloWorld() {
            var oService = document.getElementById("service");
            
            oService.useService(sUrl, "WS_OpService");
            iCallID = service.WS_OpService.callService("HelloWorld"); 
        }
        
        /*
        function callback(res) {
            //var oResult = event.result;

            if (!res.error) {
                alert("webservice success!");
            } else {
                alert("webservice error!");
            }
        }
        */
        
        function onWebServiceResult() {
            var oResult = window.event.result;

            if (oResult.id == iCallID) {
                var oDiv = document.getElementById("Result");

                if (oResult.error) {
                    alert("An error occurred: " + oResult.errorDetail.string);
                } else {
                    alert("The result is: " + oResult.value);
                }
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    <div id="service" style="behavior:url(webservice.htc)" onresult="onWebServiceResult()"></div>
    
    <input type="button" id="btnLoad" name="btnLoad" value="load result" 
        onclick="javascript:getHelloWorld();" />
    
    <div id="Result"></div>
    
    </div>
    </form>
</body>
</html>

运行结果:
alert框弹出 "Hello World"

时间: 2024-10-24 13:29:04

javascript调用WebService - Hello World的相关文章

.net 下用javascript调用webservice

javascript|web .net 下用javascript调用webservice的话,要用到webservice behavior.下面以一个例子讲解之,比较简单 1 .首先,要创建一个webservice,比如 <%@ WebService Language="C#" class=MyMath %>using System;using System.Web.Services;public class MyMath {[WebMethod]public int ad

javascript调用webservice中的变量

问题描述 求高手指教javascript中调用了webservice,webservice的回调函数反应似乎有点慢,在下面的语句中想要用回调函数中的变量,但总是不能成功调用.感觉应该是回调函数还没有执行完就已经执行了下面的语句,不知道该如何解决 解决方案 解决方案二:该回复于2012-04-24 14:08:48被版主删除解决方案三:webservice的回调函数是什么东西?应该是ajax方法的吧,把你的ajax方法是否异步设为false或者ajax执行完后才能执行的方法写道ajax的回调函数里

用javascript调用webservice(webservice behavior)

<script language="javascript"> function getfemale() { //第一个参数是webservice的url,后面是名称 female.useService("news.asmx?WSDL","news"); //设置一个回调函数,service返回结果的时候回调:第一个参数是回调函数的名称,后面的是webservice的参数 intCallID=female.news.callServic

如何在ASP.Net Ajax中调用WebService

ajax|asp.net|web 今天我想实现利用javascript调用WebService我首先就想到了ASP.Net Ajax 因为微软的东西用着方便,我从网上看了看,这东西好多人都写了,我就从官方找了个Demo下了看看源代码,感觉没什么特殊的,于是动手开始写.先添加一个webservice.asmx然后在default.aspx中加入ScriptManager 并设置serviecs属性<asp:ScriptManager runat="server" ID="

用JavaScript与WebService实现网页部分数据XML传送

javascript|web|xml|数据|网页 B/S结构的程序每执行一个操作往往都需要刷新页面,在刷新过程中,服务器不但要将数据发送到客户端,还需要将一些格式信息,比如说表格.图片.标题等重新发送,占用了大量带宽.尽管IE提供了页面缓存的功能,但对于时刻发生变化的动态网页,本地缓存基本上不起什么作用.如果能够让Web服务器只传送关键数据,不传送格式就可以减少带宽占用.当然,在我的系统开发过程中,使用了智能卡进行关键数据加.解密,出于速度考虑,尽可能减少被加密的数据就可以提高信息的显示速度.

.net 2008 调用webservice服务出错

问题描述 DimobjInsuAsNewServiceReference3.outwebserviceClient在这个地方报错!在ServiceModel客户端配置部分中,找不到引用协定"ServiceReference3.outwebservice"的默认终结点元素.这可能是因为未找到应用程序的配置文件,或者是因为客户端元素中找不到与此协定匹配的终结点元素.请大家帮我看看这是什么原因,我在服务引用的时候是可以找到服务的! 解决方案 解决方案二:删除这个Web引用,重新生成一下.解决

JavaScript 调用 ASP.NET WebService 的简单方法

客户端 JavaScript 调用 ASP.NET WebService 的方法除了采用 WebServer.htc 和构造 SOAPAction 的方法外,下面介绍一个采用 Ajax调用的简单方法,并且可以传递参数.其实,ASP.NET WebService 就是一个网站,所以,Request 对象是可用的,这样,传递参数就很容易了.下面是一个WebService1.asmx的代码: ASMX 代码: <%@ WebService Language="C#" CodeBehin

一起谈.NET技术,JavaScript 调用 ASP.NET WebService 的简单方法

客户端 JavaScript 调用 ASP.NET WebService 的方法除了采用 WebServer.htc 和构造 SOAPAction 的方法外,下面介绍一个采用 Ajax调用的简单方法,并且可以传递参数.其实,ASP.NET WebService 就是一个网站,所以,Request 对象是可用的,这样,传递参数就很容易了.下面是一个WebService1.asmx的代码: ASMX 代码: <%@ WebService Language="C#" CodeBehin

异步调用webservice

     今天学习webservice的异步调用.找了很多都是说会在客户端生成的Proxy类中会生成Begin<方法名>和End<方法名>,然后在这两个方法之间调用自己的代码的方式实现异步操作. 但是,在客户端的Proxy类中没有这样的方法,相反的却有<方法名>Async的方法.这个是不是新的异步调用新的实现方式呢?于是网上找了找发现了两篇很有价值的博文. 一篇引用自http://book.51cto.com/art/200906/129768.htm,是李天平的.