js调用WebService的几种方法

转载 2007年09月17日 17:46:00

js调用WebService的几种方法:

通过XmlHttp+WebService(原始方法)

原文地址:http://netboy.cnblogs.com/archive/2006/02/18/333260.html

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
public Service () {

//Uncomment the following line if using designed components
//InitializeComponent();
}

[WebMethod]
public string SayHelloTo(string Name) {
return "Hello "+Name;
}

}
还是俗了点。:)

2. js调用webservice+xmlhttp的实现部分。

<html>
<title>
Call webservice with javascript and xmlhttp.
</title>
<body>
<script language="javascript">

//Test function with get method.
function RequestByGet(data){

var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
//Webservice location.
var URL="http://localhost:1323/WebSite6/Service.asmx/SayHelloTo?Name=Zach";
xmlhttp.Open("GET",URL, false);
xmlhttp.SetRequestHeader ("Content-Type","text/xml; charset=utf-8");
xmlhttp.SetRequestHeader ("SOAPAction","http://tempuri.org/SayHelloTo");
xmlhttp.Send(data);
var result = xmlhttp.status;
//OK
if(result==200) {
document.write(xmlhttp.responseText);
}
xmlhttp = null;
}

//Test function with post method
function RequestByPost(value)
{
var data;
data = '<?xml version="1.0" encoding="utf-8"?>';
data = data + '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">';
data = data + '<soap:Body>';
data = data + '<SayHelloTo xmlns="http://tempuri.org/">';
data = data + '<Name>'+value+'</Name>';
data = data + '</SayHelloTo>';
data = data + '</soap:Body>';
data = data + '</soap:Envelope>';

var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
var URL="http://localhost:1323/WebSite6/Service.asmx";
xmlhttp.Open("POST",URL, false);
xmlhttp.SetRequestHeader ("Content-Type","text/xml; charset=gb2312");
xmlhttp.SetRequestHeader ("SOAPAction","http://tempuri.org/SayHelloTo");
xmlhttp.Send(data);
document.write( xmlhttp.responseText);

}

</Script>

<input type="button" value="CallWebserviceByGet" onClick="RequestByGet(null)">
<input type="button" value="CallWebserviceByPost" onClick="RequestByPost('Zach')">

</body>
</html>
对于使用post方法需要发送的那堆东东可以在webservice的测试页面中找到,自己拼凑加上对应的参数就可以。

通过Style.BEHAVIOR来实现的方法(比较简单)

原文地址:http://www.zahui.com/html/4/37953.htm

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

function female_result(result)//回调函数
{
if(result.error)
{
female.innerHTML=result.errorDetail.string;
}
else
{
female.innerHTML=result.value; //将webservice返回的结果写如div中
}
}
</script>
页面显示部分: <div id="female" style="BEHAVIOR:url(WebService.htc)"></div>

ok,这给我们在静态页调用动态的内容提供了一种途径;
这里如果给getfemale()函数加上定时调用的话,就是一种无刷新更新页面的机制了。
缺点是webservice会有一定的延迟,即使是本地的webservice也会比静态页面慢很多,初次打开页面会感觉很不协调。

 

第二种方法使用了style.代码就简洁多了他使用了css.定义了div的行为.比起第一种方法,就易读多了:)

STYLE="behavior:url(webservice.htc)"

前提条件是:

If you are using Microsoft IE 5 or later, you can use the behavior/HTML-Component "WebService" to access a Web service. The "WebService" behavior communicates with Web services over HTTP using Simple Object Access Protocol (SOAP).

附注:另一个总结帖子在:http://goody9807.cnblogs.com/archive/2005/08/17/216725.html

 

Calling WebServices using Javascript

If you are using Microsoft IE 5 or later, you can use the behavior/HTML-Component "WebService" to access a Web service. The "WebService" behavior communicates with Web services over HTTP using Simple Object Access Protocol (SOAP).

To use the "WebService" behavior, you must attach it to an element using the STYLE attribute, as follows:

 

STYLE="behavior:url(webservice.htc)">

 附上IBM上面有关Ajax调用WebService的文章:

使用 AJAX 调用 SOAP Web 服务,第 1 部分: 构建 Web 服务客户机


 

js跨域调用WebService的简单实例

步骤1. 在web.config中的system.web节点里加入 步骤2. webservice代码 using System; ...

使用JS、ajax访问WebService跨域

通过js来访问webservice有两种不同的形式 1、通过SOAP协议进行访问。 发送的全部是XML数据,且必须是POST请求。 2、通过HTTP的get/post方式进行访问。 此种情况又...

使用JS调用WebService示例

使用JS调用WebService简单示例
  • wc49789
  • wc49789
  • 2017年02月22日 16:50
  • 418

纯js调用webservice

通过ajax调用WebService服务 var xhr = new ActiveXObject("Microsoft.XMLHTTP"); function sendMsg...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

利用JavaScript SOAP Client直接调用webService --完整的前后台配置与调用示例

在前端javascript代码中直接调用webService服务,可以将后台调用webService的业务代码转移到前台,这样做的好处是: 1) 减少了后台编码量; 2) 在特定的情况下有助于减轻...

ajax跨域请求调用webservice接口

最近突然想学习webservice,一直不知道如何跨域调用调用。如果都在同一个项目,相信大家都知道了?特此整理一下关键点,权当学习。 1.WebService 接口编写。这里不在赘述。 步骤:新建...

Javascript调用Webservice的多种方法

通过xmlhttp+webservice(原始方法) 原文地址:http://netboy.cnblogs.com/archive/2006/02/18/333260.html using Syste...

利用JavaScript SOAP Client直接调用webService --完整的前后台配置与调用示例

在前端javascript代码中直接调用webService服务,可以将后台调用webService的业务代码转移到前台,这样做的好处是: 1) 减少了后台编码量; 2) 在特定的情况下有助于减轻服务...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js调用WebService的几种方法
举报原因:
原因补充:

(最多只允许输入30个字)