在下面幾行代碼中,你把result對(duì)象的ID與callService方法返回的ID進(jìn)行匹配:
以下為引用的內(nèi)容:
//檢查事件是否相同
if(iCallID!=result.id)
return;
接著檢查error屬性以確定在Web服務(wù)的執(zhí)行過程中是否發(fā)生過錯(cuò)誤。如果發(fā)生過錯(cuò)誤,就在消息窗口中顯示錯(cuò)誤信息。如果沒有錯(cuò)誤,就處理返回的結(jié)果并把它們顯示在HTMLDIV標(biāo)記中:
以下為引用的內(nèi)容:
if(result.error)
{
//讀取錯(cuò)誤信息
varfaultCode=result.errorDetail.code;
varfaultString=result.errorDetail.string;
alert("ERROR:Code="+faultCode+",FaultString="+faultString);
}
else
{
//把結(jié)果值賦予本地變量
objXMLNode=result.value;
objXMLDoc=newActiveXObject("Microsoft.XMLDOM");
//把返回的XML字符串載入XMLDOM對(duì)象
objXMLDoc.loadXML(objXMLNode.xml);
//得到Employees節(jié)點(diǎn)的指針
objEmployee=objXMLDoc.selectSingleNode("GetEmpDetailsByEmpIDResult").
selectSingleNode("EmployeesRoot").selectSingleNode("Employees");
//查看從服務(wù)器返回的employee指針是否有效
strHTML="<fontcolor=’#0000FF’>";
if(objEmployee!=null)
{
//動(dòng)態(tài)生成HTML并添加到字符串的內(nèi)容中
strHTML+="<br><br>EmployeeID:<b>"+
objEmployee.selectSingleNode("EmployeeID").text+
"</b><br><br>";
strHTML+="EmployeeFirstName:<b>"+
objEmployee.selectSingleNode("FirstName").text+
"</b><br><br>";
strHTML+="EmployeeLastName:<b>"+
objEmployee.selectSingleNode("LastName").text+
"</b><br><br>";
strHTML+="EmployeeTitle:<b>"+
objEmployee.selectSingleNode("Title").text+
"</b><br><br>";
strHTML+="EmployeeTitle:<b>"+
objEmployee.selectSingleNode("Title").text+
"</b><br><br>";
strHTML+="TitleOfCourtesy:<b>"+
objEmployee.selectSingleNode("TitleOfCourtesy").text+
"</b><br><br>";
strHTML+="PostalCode:<b>"+
objEmployee.selectSingleNode("PostalCode").text+
"</b><br><br>";
}
else
{
strHTML+="<br><br><b>Employee
notfound</b>";
}
strHTML+="</font>"
//把動(dòng)態(tài)生成的HTML賦予div標(biāo)記
divContents.innerHTML=strHTML;
}
}
在上面的例子中,你使用調(diào)用Web服務(wù)時(shí)指定的回調(diào)函數(shù)來處理Web服務(wù)返回的結(jié)果。還有一種辦法,在定義DIV標(biāo)記的時(shí)候你也可以指定一個(gè)回調(diào)函數(shù)(用這種方法把Web服務(wù)行為包含在頁面中)。例如,在下面的代碼中,你使用Web服務(wù)行為支持的onresult事件句柄指定了回調(diào)函數(shù):
以下為引用的內(nèi)容:
<divid="service"style="BEHAVIOR:url(webservice.htc)"
onresult="DisplayResults()"></div>
有了上面的定義后,你就可以在DisplayResults函數(shù)中處理Web服務(wù)返回的結(jié)果了。下面的代碼演示了DisplayResults函數(shù)的一種實(shí)現(xiàn)示例:
以下為引用的內(nèi)容:
functionDisplayResults()
{
//檢查事件id是否相同
if(iCallID!=event.result.id)
return;
if(event.result.error)
{
varfaultCode=event.result.errorDetail.code;
varfaultString=event.result.errorDetail.string;
alert("ERROR:Code="+faultCode+",FaultString="+
faultString);
}
else
{
//顯示結(jié)果值
alert(event.result.value);
}
}
在代碼中你可以看到,我們使用event對(duì)象得到包含Web服務(wù)調(diào)用返回結(jié)果的result對(duì)象的指針。
把代碼放在一起
如果使用瀏覽器查看上面的ASP.NET頁面,你看到的輸出類似下圖。在employee文本框中輸入一個(gè)有效的EmployeeID并點(diǎn)擊"GetEmployeeDetails"調(diào)用遠(yuǎn)程Web服務(wù)。這種操作將導(dǎo)致對(duì)該Web服務(wù)的異步調(diào)用,并且該Web服務(wù)返回的結(jié)果將顯示在Web頁面的DIV元素中。
我要再次重點(diǎn)強(qiáng)調(diào),對(duì)于IEWeb服務(wù)行為,需要IE5或以上版本,因此如果你能夠確定用戶所使用的瀏覽器類型,這種技術(shù)就很適合用于企業(yè)內(nèi)部網(wǎng)應(yīng)用程序。
結(jié)論
在本文中,你看到了Web服務(wù)行為是如何提供一種從Web服務(wù)器向客戶端瀏覽器傳遞信息的改進(jìn)的解決方法的。使用Web服務(wù)行為調(diào)用遠(yuǎn)程Web方法簡化了客戶端的操作,使Web服務(wù)的使用更加有吸引力。我們同時(shí)看到Web服務(wù)行為是如何通過提供動(dòng)態(tài)的交互操作Web頁面,幫助我們提高了用戶體驗(yàn)的。由于Web服務(wù)行為(webservice.htc文件)封裝了使用SOAP調(diào)用遠(yuǎn)程Web服務(wù)所需要的代碼,隨著SOAP標(biāo)準(zhǔn)的演化,你可以獨(dú)立地更新行為而不需要改變客戶端腳本。 本文出自:億恩科技【www.riomediacenter.com】
服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|