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   " Hell o 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"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值