Javascript調(diào)用Webservice的多種方法
更新時(shí)間:2009年02月06日 02:39:23 作者:
通過(guò)xmlhttp+webservice(原始方法)
復(fù)制代碼 代碼如下:
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;
}
}
還是俗了點(diǎn)。:)
2. js調(diào)用webservice+xmlhttp的實(shí)現(xiàn)部分。
復(fù)制代碼 代碼如下:
<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"?>';
datadata = 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/">';
datadata = data + '<soap:Body>';
datadata = data + '<SayHelloTo xmlns="http://tempuri.org/">';
datadata = data + '<Name>'+value+'</Name>';
datadata = data + '</SayHelloTo>';
datadata = data + '</soap:Body>';
datadata = 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>
對(duì)于使用post方法需要發(fā)送的那堆東東可以在webservice的測(cè)試頁(yè)面中找到,自己拼湊加上對(duì)應(yīng)的參數(shù)就可以。
通過(guò)style.behavior來(lái)實(shí)現(xiàn)的方法(比較簡(jiǎn)單)
function getfemale()
{
//第一個(gè)參數(shù)是webservice的url,后面是名稱
female.useService("news.asmx?WSDL","news");
//設(shè)置一個(gè)回調(diào)函數(shù),service返回結(jié)果的時(shí)候回調(diào);第一個(gè)參數(shù)是回調(diào)函數(shù)的名稱,后面的是webservice的參數(shù)
intCallID=female.news.callService(female_result,"getphoto","female"); //這里有兩個(gè)參數(shù).....
}
function female_result(result)//回調(diào)函數(shù)
{
if(result.error)
{
female.innerHTML=result.errorDetail.string;
}
else
{
female.innerHTML=result.value; //將webservice返回的結(jié)果寫(xiě)如div中
}
}
頁(yè)面顯示部分: <div id="female" style="BEHAVIOR:url(WebService.htc)"></div>
ok,這給我們?cè)陟o態(tài)頁(yè)調(diào)用動(dòng)態(tài)的內(nèi)容提供了一種途徑;
這里如果給getfemale()函數(shù)加上定時(shí)調(diào)用的話,就是一種無(wú)刷新更新頁(yè)面的機(jī)制了。
缺點(diǎn)是webservice會(huì)有一定的延遲,即使是本地的webservice也會(huì)比靜態(tài)頁(yè)面慢很多,初次打開(kāi)頁(yè)面會(huì)感覺(jué)很不協(xié)調(diào)。
第二種方法使用了style.代碼就簡(jiǎn)潔多了他使用了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).
附注:另一個(gè)總結(jié)帖子在: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上面有關(guān)ajax調(diào)用webservice的文章:
使用 Ajax 調(diào)用 SOAP Web 服務(wù),第 1 部分: 構(gòu)建 Web 服務(wù)客戶機(jī)
您可能感興趣的文章:
- 用JavaScript調(diào)用WebService的示例
- 用Jquery訪問(wèn)WebService并返回Json的代碼
- javascript與webservice的通信實(shí)現(xiàn)代碼
- jQuery結(jié)合Json提交數(shù)據(jù)到Webservice,并接收從Webservice返回的Json數(shù)據(jù)
- js調(diào)用webservice中的方法實(shí)現(xiàn)思路及代碼
- JSP使用Servlet過(guò)濾器進(jìn)行身份驗(yàn)證的方法
- Nodejs中session的簡(jiǎn)單使用及通過(guò)session實(shí)現(xiàn)身份驗(yàn)證的方法
- AngularJS身份驗(yàn)證的方法
- js調(diào)用webservice構(gòu)造SOAP進(jìn)行身份驗(yàn)證
相關(guān)文章
解決ASP.NET?Core中使用漏桶算法限流的問(wèn)題
漏桶算法是限流的四大主流算法之一,其應(yīng)用場(chǎng)景各種資料中介紹的不多,一般都是說(shuō)應(yīng)用在網(wǎng)絡(luò)流量控制中,今天通過(guò)本文給大家介紹ASP.NET?Core中使用漏桶算法限流的問(wèn)題,感興趣的朋友跟隨小編一起看看吧2021-12-12如何在?ASP.NET?Core?Web?API?中處理?Patch?請(qǐng)求
這篇文章主要介紹了在?ASP.NET?Core?Web?API中處理Patch請(qǐng)求,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05ASP.NET?MVC使用jQuery?ui的progressbar實(shí)現(xiàn)進(jìn)度條
這篇文章介紹了ASP.NET?MVC使用jQuery?ui的progressbar實(shí)現(xiàn)進(jìn)度條的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08asp.net(c#) RSS功能實(shí)現(xiàn)代碼
這兩天一邊從網(wǎng)上找資料,自己再測(cè)試,終于完成本站的RSS功能了!先自我恭喜下!!2008-11-11ASP.NET MVC5網(wǎng)站開(kāi)發(fā)之展示層架構(gòu)(五)
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC5網(wǎng)站開(kāi)發(fā)之展示層架構(gòu),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08asp.net TreeView遞歸循環(huán)子節(jié)點(diǎn)生成樹(shù)形菜單實(shí)例
這篇文章主要介紹了asp.net TreeView遞歸循環(huán)子節(jié)點(diǎn)生成樹(shù)形菜單的方法,涉及asp.net遞歸算法及節(jié)點(diǎn)操作相關(guān)技巧,需要的朋友可以參考下2016-07-07