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