javascript调用WebService - Hello World

简介: WebService既可以大用,也可以小用。大用可以应用到整个系统,将整个系统设计成SOA(面向服务),小用可以应用到JS。今天我们就来看一下如何在网页中用JS来调用WebService。我们举的例子很简单,用 JS调用默认VS2008生成的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"
目录
相关文章
|
4月前
|
传感器 移动开发 前端开发
2D物理引擎 Box2D for javascript Games 第一章 Hello Box2D World
2D物理引擎 Box2D for javascript Games 第一章 Hello Box2D World
|
JavaScript 前端开发 Android开发
JS(Javascript)调用Android原生方法三步走
JS(Javascript)调用Android原生方法三步走
602 0
|
JavaScript
js基础笔记学习210HelloWorld
js基础笔记学习210HelloWorld
72 0
js基础笔记学习210HelloWorld
|
JavaScript
js基础笔记学习3-HelloWorld
js基础笔记学习3-HelloWorld
71 0
js基础笔记学习3-HelloWorld
|
JavaScript 前端开发 API
js调用网页摄像头进行直播/拍照
js调用网页摄像头进行直播/拍照
457 0
js调用网页摄像头进行直播/拍照
|
JavaScript 前端开发 Java
java调用js实现富文本过滤
java调用js实现富文本过滤
285 0
java调用js实现富文本过滤
|
JavaScript Android开发 iOS开发
html通过js调用ios或android代码
html通过js调用ios或android代码
73 0
|
移动开发 JavaScript weex
weex开发 - 方法的映射,在weex调用fetch方法,实际调用同名的原生方法,在回调中把数据传递回js
weex开发 - 方法的映射,在weex调用fetch方法,实际调用同名的原生方法,在回调中把数据传递回js
217 0
|
JavaScript
js循环调用接口
js循环调用接口
335 0
|
JavaScript 前端开发
JavaScript 进阶第六章(this与函数的调用模式 )
JavaScript 进阶第六章(this与函数的调用模式 )
96 0