成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

jQuery調用WCF開發實例經驗分享

開發 前端
本文討論一下jQuery異步調用WCF服務的過程中需要注意的各種問題及經驗分享。

我所使用的機器環境是:Windows7 VS2010 。

一、我們首先建好一個項目,在VS2010中,建立好一個Web項目,并添加一個“啟用了Ajax的WCF服務”。

二、添加完成后,會自動打開剛才添加的文件,我們進行一些簡的修改,便于一會客戶端去調用,修改代碼如下:

  1. [ServiceContract(Namespace = "")]   
  2. [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]  
  3. public class DataService  
  4.      {   
  5.          /// <summary>   
  6.          /// 一、簡單調用服務端方法   
  7.         /// </summary>   
  8.          /// <returns></returns>  
  9.          [OperationContract]  
  10.          [WebGet()]  
  11.          public string DoWork()  
  12.          {            
  13.              return string.Format("Today is {0}",DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss:fff"));  
  14.          }  
  15.           
  16.      } 

三、客戶端代碼中如下:

  1. <html xmlns="http://www.w3.org/1999/xhtml">   
  2.   <head runat="server">   
  3.      <title></title>  
  4.       <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>   
  5.       <script type="text/javascript">   
  6.          $(document).ready(function () {   
  7.              $("#btnGetServerDate").click(function () {   
  8.                  $.ajax({   
  9.                      url: "DataService.svc/DoWork",  
  10.                      type: "get",  
  11.                      success: function (data) {  
  12.                          alert(data.d);  
  13.                      }  
  14.                  })  
  15.              });  
  16.          })  
  17.      </script>  
  18.  </head>  
  19.  <body>  
  20.      <form id="form1" runat="server">  
  21.      <div>  
  22.       
  23.          <input id="btnGetServerDate" type="button" value="簡單調用" title="顯示服務器上的時間" /></div>  
  24.      </form>  
  25.  </body>  
  26.  </html> 

以上是最基本的調用沒有什么可說的.

下面,我們來進行一個稍微復雜點的例子演示,我們在實現的效果是:“客戶端提交一個注冊信息,然后在服務器端取出并解析成一個實體類對象,然后返回客戶端狀態。服務端代碼如下:

  1. /// <summary>   
  2.        /// 二、由客戶端傳入數據示例        
  3.        /// </summary>   
  4.        /// <param name="userInfo">Json格式的UserInfo數據</param>   
  5.        /// <returns></returns>   
  6.        [OperationContract]   
  7.        [WebGet(ResponseFormat=WebMessageFormat.Json)] //必須是WebGet,客戶端對應著Get方式請求,如果是POST方式,服務端而是WebInvoke,不過很遺憾,暫時貌似好不支持,反正我是沒使用成功,有知道的請告訴我   
  8.        public string Register(string userInfo)   
  9.        {  
  10.            UserInfo model = JsonConvert.DeserializeObject<UserInfo>(userInfo);//Newtonsoft.Json 使用第三方類庫將傳入的Json字符串反序列化成實體類。  
  11.            return string.Format("hello {0} sir!", model.LoginName);  
  12.        } 

然后客戶端對應如下:

  1. //示例二   
  2.            $("#btnRegiter").click(function () {   
  3.                var jsonString = "userinfo={\"loginName\":\"cheng\",\"password\":\"tomcat\"}"//注意:我服務端只接收一個參數那就是String類型命稱為userInfo的變量,所以前面對應也叫userInfo   
  4.                $.ajax({   
  5.                    url: "DataService.svc/Register",   
  6.                    type:"get"//注意是Get方式,服務端對應著WebGet()   
  7.                    data: jsonString,   
  8.                    success: function (data) {   
  9.                        alert(data.d);  
  10.                    }  
  11.                })  
  12.            }) 

此例子主要演示,客戶端提交一個JSON字符串格式的數組到服務端,然后服務端通過反序列化方式將傳入的字符串序列化成自定義對象。NET3.5自已也支持反序列化,但用的不爽,我用的是“Newtonsoft.Json”這個,但也需要注意一個問題,那就是如果客戶端傳入的數據是數值類型的話,請不要加引號,否則會反序列化失敗。如“{"age":25}”,服務端對應“public int Age{get;set;}”。但具JSON.org上說的標準JSON格式,健/值好像都應該需要加上引號的,所以這里大家需要注意。

下面接著在演示一個客戶端獲取一個List類型數據并解析,同樣服務端代碼如下:

  1. [OperationContract]   
  2.          [WebGet(ResponseFormat = WebMessageFormat.Json)]   
  3.          public List<UserInfo> GetAll()   
  4.          {   
  5.            List<UserInfo> lists = new List<UserInfo>()    
  6.              {    
  7.                  new UserInfo() { LoginName = "cheng", Password = "cheng" },   
  8.                  new UserInfo() { LoginName = "tomcat", Password = "tomcat" }    
  9.              };  
  10.              return lists;  
  11.          }  
  12.    
  13.  [DataContract]  
  14.      public class UserInfo  
  15.      {  
  16.          private string _loginName;  
  17.          private string _password;  
  18.    
  19.          [DataMember]  
  20.          public string Password  
  21.          {  
  22.              get { return _password; }  
  23.              set { _password = value; }  
  24.          }  
  25.          [DataMember]  
  26.          public string LoginName  
  27.          {  
  28.              get { return _loginName; }  
  29.              set { _loginName = value; }  
  30.          }  
  31.      } 

客戶端代碼如下:

  1. $("#btnGetAllUser").click(function () {   
  2.                  $.ajax({   
  3.                      url: "DataService.svc/GetAll",   
  4.                      type: "get"//注意是Get方式,服務端對應著WebGet()                
  5.                      success: function (data) {   
  6.                          for (var i = 0; i < data.d.length; i++) {   
  7.                              $("#divContent").append("<a>用戶名:" + data.d[i].LoginName + "</a><a>密碼:" + data.d[i].Password + "</a><br />");                              
  8.                          }   
  9.                      },  
  10.                      error: function (msg) {  
  11.                          alert(msg.responseText);  
  12.                      }  
  13.                  })  
  14.              }) 

好了,三種最常用的調用方式就這樣了,當然,你可以稍微修改一下連接上數據庫一起使用,***我總結一下,在調用過程常見的錯誤及解決方法。

一、推薦使用Firebug去調試,在Firebug中有一個“網絡”選項卡,在那里,你可以清楚的看到你是否成功調用WCF服務,而且可以看到返回的數據格工及詳細內容,而且如果調用出錯,也可以給出明確的出錯信息。

jQuery調用WCF經驗分享

二、在調試階端,推薦使用“GET”方式請求服務,然后在error:funcation(msg){alert(msg.responseText);}這樣同樣也能看到大部份出錯提示。

三、配置文件,在添加時就自動配置好了,所以一般情況下沒有特殊要求無需更改。這是VS2010中的好處。

原文鏈接:http://www.cnblogs.com/bdqlaccp/archive/2011/05/08/2039415.html

【編輯推薦】

  1. 5月***超有趣的免費jQuery插件推薦
  2. 從零開始學習jQuery之管理jQuery包裝集
  3. jQuery性能指標和調優
  4. 手把手教你jQuery jqPlot畫圖插件
  5. 從零開始學習jQuery之***的選擇器
責任編輯:陳貽新 來源: 陳玉國的博客
相關推薦

2009-12-22 19:26:51

WCF綁定

2009-12-22 16:03:03

WCF異常

2009-12-22 13:48:09

引用WCF服務

2009-12-22 18:18:11

WCF客戶端編程

2010-03-01 15:40:04

WCF實例停用

2009-12-21 13:27:45

WCF服務配置信息

2010-02-22 11:10:17

WCF獲取客戶端IP

2009-06-12 14:32:53

WCFJSON對象jQuery

2011-06-14 09:27:43

高性能WEB開發

2011-07-07 10:49:41

JavaScript

2009-12-07 15:02:46

WCF學習

2018-05-07 15:28:45

項目開發管理

2011-07-08 15:20:30

seamjsf

2010-01-14 18:14:22

VB.NET開發特點

2012-12-27 10:05:15

2011-04-25 16:56:34

Greedy Bank游戲開發獨立開發者

2009-11-09 17:06:38

WCF選擇綁定

2010-03-02 17:48:35

WCF尋址報頭

2023-09-28 11:42:15

2011-07-22 13:37:32

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线成人精品视频 | 国产精品一区二区免费 | 天天澡天天狠天天天做 | 国产日韩精品久久 | 国产一区2区 | 一级片在线观看 | 久久久久久久久久久福利观看 | 在线播放国产一区二区三区 | 国产伦一区二区三区四区 | 亚洲欧美综合精品久久成人 | 97色在线观看免费视频 | 美女一区二区在线观看 | 日韩成人在线免费视频 | 91文字幕巨乱亚洲香蕉 | 狠狠艹 | 欧美精品一 | 欧美一级片在线看 | av av在线 | 亚洲精品小视频在线观看 | 久久久精品一区 | 91久久精品一区二区二区 | 国产三级日本三级 | 免费观看黄色片视频 | 久久99精品久久久久蜜桃tv | 精品国产一二三区 | 免费黄色片在线观看 | 久久久久久久久久久久久久av | 久久国产电影 | 欧美一区二区三区久久精品 | 美美女高清毛片视频免费观看 | 欧美日本久久 | 91电影在线播放 | 日韩高清三区 | 午夜伦4480yy私人影院 | 精品美女视频在免费观看 | 精品久久久久久久久久久久久久 | 久久久精品一区 | 18gay男同69亚洲网站 | 国产xxxx岁13xxxxhd | 久久久99国产精品免费 | 欧美一二区 |