重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設、域名注冊、服務器等服務
為企業(yè)提供網(wǎng)站建設、域名注冊、服務器等服務
第十篇:Ajax調用WCF
好久不更新了,今天寫一寫如何用Ajax調用WCF服務。在WebService時代,只需要加一行[System.Web.Script.Services.ScriptService]就可以使用Ajax調用了(要求.Net 3.5),到了WCF中,要稍微復雜一些。
寫個小DEMO,這回是基于IIS建一個WCF工程,服務端是一個DataService.svc文件,客戶端我們自己寫一個Client.htm。
1、服務端
定義服務契約,沒什么新鮮的,只有一個GetUser方法。(IDataService.cs)
- using
- using
- namespace
- publicinterface
實現(xiàn)類也超級簡單,返回一個User對象。(DataService.svc.cs)
- using
- using
- namespace
- publicclass
- public
- returnnew"BoyTNT"
其中的User是數(shù)據(jù)契約,只有兩個成員。(User.cs)
- using
- using
- namespace
- publicclass
- publicstringgetset
- publicintgetset
然后是重點的Web.config文件了,要啟用Ajax訪問,需要對endpoint進行一下特殊聲明(綠色注釋部分)。下面只節(jié)選了system.serviceModel節(jié)點。
2、客戶端
在工程里加一個Client.htm,注意ajax請求不能跨域,因此必須和服務端放到一塊兒。我這里使用了jquery來進行ajax訪問。
- "http://www.w3.org/1999/xhtml"
- "javascript""jquery-1.4.2.js"
- "javascript"
- function
- "url""DataService.svc/GetUser"http://注意訪問的url的寫法,是服務名+方法名,這點和WebService是一致的
- "cache"false
- "async"true
- "type""POST"
- "dataType""json"
- "contentType""application/json; charset=utf-8"
- "data"http://如果有參數(shù),在這里傳遞
- function
- //結果被封裝到json.d屬性中,數(shù)據(jù)契約中定義的兩個成員都能取到
- "#result""Name="", Age="
- function
- "#result"
- "button""獲取用戶""executeAjaxQuery()"
- "result""width:400px;height:200px"
OK,運行一下,在結果窗口里應該能收到“Name=BoyTNT, Age=30”。如果抓一下包,能看到服務端返回的內容是:
- {"d""__type""User:#WebServer""Age""Name""BoyTNT"
這就是為什么要從json.d中取數(shù)據(jù)的原因。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。