摘要:[ASP.NET AJAX]如何使用 JavaScript 呼叫 WebService
本文使用 JavaScript 呼叫 WebService 的方式來實現非同步機制,也就是說使用 JavaScript 呼叫 WebService 的函式(C#/VB),使其不會刷新網頁,將結果更新於網頁上。
在實作過程中有幾點注意事項:
1. WebService 類別必需加上屬性:[System.Web.Script.Services.ScriptService] 來指出這個 WebService 可由 JavaScript 呼叫
2. 方法必需要加上 [System.Web.Services.WebMethod]屬性。
3. 在 ScriptManager(ToolkitScriptManager) 控制項的 Services 集合屬性中加入指定要呼叫 WebService 的位置參考
4. JavaScript 使用 WebService 類別名稱呼叫 WebService 函式。
<WebService Namespace>.<WebService ClassName>.<WebService MethodName(param..., Success, fail, userContext)>
Success, fail, userContext 三個參數為選擇性的
5. 預設傳輸行為模式為:使用 HTTP POST 命令呼叫,而且回應資訊將序列化為 JSON 傳回。
WebService(C#)
JavaScript
運作方式
當 ScriptManager 或 ToolkitScriptManager 控制項發現 Services 屬性集合中有 WebService 的位置參考時,
會將此 WebService 類別轉換為可供 Client 呼叫的 JavaScript,
而這一份 JavaScript 會存在於 http://(host)/WebService1.asmx/jsdebug 這個位置,
然後 Web 網頁再用 Include 的方式鉗入。
<script src="WebService1.asmx/jsdebug" type="text/javascript"></script>
了解限制
1. 此 WebService 必須是以 ASP.NET 所建立
2. XMLHttpRequest 不允許跨網域呼叫的問題
解決方式
自已建立一個 WebService,在這個 WebService 再連結外部的 WebSerice
此程式範例介面與前面介紹的 PageMethods 相同
其他處理方式可參閱下面連結,處理方式幾乎一樣