新聞中心
我所使用的機(jī)器環(huán)境是:Windows7 VS2010 。

創(chuàng)新互聯(lián)從2013年開(kāi)始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元修文做網(wǎng)站,已為上家服務(wù),為修文各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
一、我們首先建好一個(gè)項(xiàng)目,在VS2010中,建立好一個(gè)Web項(xiàng)目,并添加一個(gè)“啟用了Ajax的WCF服務(wù)”。
二、添加完成后,會(huì)自動(dòng)打開(kāi)剛才添加的文件,我們進(jìn)行一些簡(jiǎn)的修改,便于一會(huì)客戶端去調(diào)用,修改代碼如下:
- [ServiceContract(Namespace = "")]
- [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
- public class DataService
- {
- ///
- /// 一、簡(jiǎn)單調(diào)用服務(wù)端方法
- ///
- ///
- [OperationContract]
- [WebGet()]
- public string DoWork()
- {
- return string.Format("Today is {0}",DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss:fff"));
- }
- }
三、客戶端代碼中如下:
以上是最基本的調(diào)用沒(méi)有什么可說(shuō)的.
下面,我們來(lái)進(jìn)行一個(gè)稍微復(fù)雜點(diǎn)的例子演示,我們?cè)趯?shí)現(xiàn)的效果是:“客戶端提交一個(gè)注冊(cè)信息,然后在服務(wù)器端取出并解析成一個(gè)實(shí)體類對(duì)象,然后返回客戶端狀態(tài)。服務(wù)端代碼如下:
- ///
- /// 二、由客戶端傳入數(shù)據(jù)示例
- ///
- /// Json格式的UserInfo數(shù)據(jù)
- ///
- [OperationContract]
- [WebGet(ResponseFormat=WebMessageFormat.Json)] //必須是WebGet,客戶端對(duì)應(yīng)著Get方式請(qǐng)求,如果是POST方式,服務(wù)端而是WebInvoke,不過(guò)很遺憾,暫時(shí)貌似好不支持,反正我是沒(méi)使用成功,有知道的請(qǐng)告訴我
- public string Register(string userInfo)
- {
- UserInfo model = JsonConvert.DeserializeObject
(userInfo);//Newtonsoft.Json 使用第三方類庫(kù)將傳入的Json字符串反序列化成實(shí)體類。 - return string.Format("hello {0} sir!", model.LoginName);
- }
然后客戶端對(duì)應(yīng)如下:
- //示例二
- $("#btnRegiter").click(function () {
- var jsonString = "userinfo={\"loginName\":\"cheng\",\"password\":\"tomcat\"}"; //注意:我服務(wù)端只接收一個(gè)參數(shù)那就是String類型命稱為userInfo的變量,所以前面對(duì)應(yīng)也叫userInfo
- $.ajax({
- url: "DataService.svc/Register",
- type:"get", //注意是Get方式,服務(wù)端對(duì)應(yīng)著WebGet()
- data: jsonString,
- success: function (data) {
- alert(data.d);
- }
- })
- })
此例子主要演示,客戶端提交一個(gè)JSON字符串格式的數(shù)組到服務(wù)端,然后服務(wù)端通過(guò)反序列化方式將傳入的字符串序列化成自定義對(duì)象。NET3.5自已也支持反序列化,但用的不爽,我用的是“Newtonsoft.Json”這個(gè),但也需要注意一個(gè)問(wèn)題,那就是如果客戶端傳入的數(shù)據(jù)是數(shù)值類型的話,請(qǐng)不要加引號(hào),否則會(huì)反序列化失敗。如“{"age":25}”,服務(wù)端對(duì)應(yīng)“public int Age{get;set;}”。但具JSON.org上說(shuō)的標(biāo)準(zhǔn)JSON格式,健/值好像都應(yīng)該需要加上引號(hào)的,所以這里大家需要注意。
下面接著在演示一個(gè)客戶端獲取一個(gè)List類型數(shù)據(jù)并解析,同樣服務(wù)端代碼如下:
- [OperationContract]
- [WebGet(ResponseFormat = WebMessageFormat.Json)]
- public List
GetAll() - {
- List
lists = new List () - {
- new UserInfo() { LoginName = "cheng", Password = "cheng" },
- new UserInfo() { LoginName = "tomcat", Password = "tomcat" }
- };
- return lists;
- }
- [DataContract]
- public class UserInfo
- {
- private string _loginName;
- private string _password;
- [DataMember]
- public string Password
- {
- get { return _password; }
- set { _password = value; }
- }
- [DataMember]
- public string LoginName
- {
- get { return _loginName; }
- set { _loginName = value; }
- }
- }
客戶端代碼如下:
- $("#btnGetAllUser").click(function () {
- $.ajax({
- url: "DataService.svc/GetAll",
- type: "get", //注意是Get方式,服務(wù)端對(duì)應(yīng)著WebGet()
- success: function (data) {
- for (var i = 0; i < data.d.length; i++) {
- $("#divContent").append("用戶名:" + data.d[i].LoginName + "密碼:" + data.d[i].Password + "
");- }
- },
- error: function (msg) {
- alert(msg.responseText);
- }
- })
- })
好了,三種最常用的調(diào)用方式就這樣了,當(dāng)然,你可以稍微修改一下連接上數(shù)據(jù)庫(kù)一起使用,***我總結(jié)一下,在調(diào)用過(guò)程常見(jiàn)的錯(cuò)誤及解決方法。
一、推薦使用Firebug去調(diào)試,在Firebug中有一個(gè)“網(wǎng)絡(luò)”選項(xiàng)卡,在那里,你可以清楚的看到你是否成功調(diào)用WCF服務(wù),而且可以看到返回的數(shù)據(jù)格工及詳細(xì)內(nèi)容,而且如果調(diào)用出錯(cuò),也可以給出明確的出錯(cuò)信息。
二、在調(diào)試階端,推薦使用“GET”方式請(qǐng)求服務(wù),然后在error:funcation(msg){alert(msg.responseText);}這樣同樣也能看到大部份出錯(cuò)提示。
三、配置文件,在添加時(shí)就自動(dòng)配置好了,所以一般情況下沒(méi)有特殊要求無(wú)需更改。這是VS2010中的好處。
原文鏈接:http://www.cnblogs.com/bdqlaccp/archive/2011/05/08/2039415.html
【編輯推薦】
- 5月***超有趣的免費(fèi)jQuery插件推薦
- 從零開(kāi)始學(xué)習(xí)jQuery之管理jQuery包裝集
- jQuery性能指標(biāo)和調(diào)優(yōu)
- 手把手教你jQuery jqPlot畫(huà)圖插件
- 從零開(kāi)始學(xué)習(xí)jQuery之***的選擇器
新聞標(biāo)題:jQuery調(diào)用WCF開(kāi)發(fā)實(shí)例經(jīng)驗(yàn)分享
網(wǎng)頁(yè)URL:http://www.dlmjj.cn/article/coecccc.html


咨詢
建站咨詢
