使用javascript调用webservice

在项目过程中遇到了在html中调用webservice的情况,由于Ajax不能跨域,而且后台那边也没有给测试环境,就自己先搭了个简易的webservice,想模拟下从html中调看能调出来么?

结果很蛋疼,wsdl能拿到,但是直接访问方法就报500,不管方法是有参还是无参都会报错,仔细检查后看到tomcat上提示no SOAPAction header,没有SOAP头。。。后来看到了pignut_wang写的http://www.iteye.com/topic/98182这篇文章,太精髓了,赶紧拿来试试,果然行了。在此感谢pignut_wang的分享。

写在前面:

由于我的webservice返回的XML与pignut_wang文中提到的webservice返回的XML在内容上不太一样,测试中有点小问题,所以我对pignut_wang提供的webservice.js文件做了点小修改

代码在IE6和FF测试通过,对于c#和java(xfire)写的webservice,都测试通过

此代码原型来源于 http://www.guru4.net/ 的javascript soapclient

发现这个下载的js只能用于调用c#的webservice,所以利用mootools,重新封装,达到IE和火狐的兼容的同时,兼容java和c#

(在例子中使用的 mootools.v1.11.js 文件,做过修改)

首先,下载pignut_wang提供的JavaScriptSOAP(V2).rar

解压后将WebService.js和mootools.v1.11.js放在webservice项目下。

然后在需要调webservice服务的页面中引用这两个JS文件,并在页面中加入请求代码:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<script type= "text/javascript" >
     var  service ;
     function  ajaxRequest()
     {
         //设置webService传入参数
         //
         //注意:
         //
         //    调用webservice(如例子中的webservicedemo.asmx)
         //           HelloTo(String name)   针对name参数必须写成name=wqj ,还有更多参数一样写,使用&符号分隔(name=11&age=20&.....),使用名称匹配
         //           传入的参数数量可以不等于(多于或少于)方法要求的参数
          
          
         var  para =  "name=tinyRed" ;
          
         var  op = {
                     data:para,
                     onComplete: showResponse,
                     onFailure:showError,
                     update: 'ajaxBackname'
                  };
  
         service =  new  WebService(url, "hello" ,op);
         service.request();
         return  false ;
     }
     function  showError(obj)
     {
         //obj 是一个xmlHttpRequest对象
         alert( "error" );
     }
     function  showResponse(requestText,requestXML)
     {
         //requestText 返回的文本
         //requestXML 返回的XML
         alert(service.getBackData(requestXML));
         //alert(requestXML);
     }
     </script>

最后,只要在需要调服务的时候调用ajaxRequest函数就可以了,不过这个函数里面的参数是要自己事先填好的哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值