<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Jquery+JSON消費(fèi)REST WCF4.0 服務(wù)(帶源碼)

        作為一種以HTTP協(xié)議為基礎(chǔ)的WCF 服務(wù),只要客戶端能模擬進(jìn)行HTTP請(qǐng)求,都能成為服務(wù)的消費(fèi)者。之前寫過《對(duì)Jquery+JSON+WebService的一點(diǎn)認(rèn)識(shí)》,覺得在REST是基于HTTP協(xié)議的,AJAX的操作也應(yīng)該一樣。但是事實(shí)上還是有些差別的。由于網(wǎng)上資源聊聊無幾,因此記錄下自己的個(gè)人體會(huì)。希望對(duì)你有些幫助!
        本篇主要講述的類容為在ASP.NET中,如何通過AJAX來消費(fèi)REST服務(wù)。
        使用JQUERY框架模擬AJAX請(qǐng)求時(shí),操作類型主要有GET、POST兩種。本節(jié)也以這兩種常用的方式來進(jìn)行介紹。(type (String) : (默認(rèn): "GET") 請(qǐng)求方式 ("POST" 或 "GET"), 默認(rèn)為 "GET"。注意:其它 HTTP 請(qǐng)求方法,如 PUT 和 DELETE 也可以使用,但僅部分瀏覽器支持。摘自:Jquery 1.4 API手冊(cè))。

      • 本篇主要涉及的操作如下:
      • 1、GET請(qǐng)求
      • 2、POST請(qǐng)求,簡(jiǎn)單數(shù)據(jù)類型
      • 3、POST請(qǐng)求,復(fù)雜數(shù)據(jù)類型

        Jq+JSON消費(fèi)REST WCF4.0 服務(wù)時(shí),對(duì)返回給客戶端數(shù)據(jù)格式,以及客戶端傳遞給服務(wù)端數(shù)據(jù)格式是通過ResponseFormat、RequestFormat 兩個(gè)枚舉類型的指定的。如下代碼所示。

      服務(wù)端實(shí)現(xiàn)代碼:

      public class AjaxService
      {
          [WebGet(UriTemplate = "/{id}"
          ,ResponseFormat =WebMessageFormat.Json
          , RequestFormat = WebMessageFormat.Json)]
          public Person GetPerson(string id)
          {
          return new Person
          {
            Id = int.Parse(id), 
            Age = 27, 
            Name = "zhansan", 
            Phone = "01082667896"
          };
        }
      
        [WebInvoke(UriTemplate = "/Post"
        , BodyStyle = WebMessageBodyStyle.WrappedRequest
        , ResponseFormat = WebMessageFormat.Json
        , RequestFormat = WebMessageFormat.Json)]
        public string UpdatePerson(Person person)
        {
          return person.Id + person.Name + person.Age + person.Phone;
        }
      
        [WebInvoke(UriTemplate = "/Rest/Post"
        , BodyStyle = WebMessageBodyStyle.WrappedRequest
        , ResponseFormat = WebMessageFormat.Json
        , RequestFormat = WebMessageFormat.Json)]
        public string Update(string message)
        {
          return string.Concat("hello", message);
        }
      }
      

        

      客戶端實(shí)現(xiàn)代碼
      1、GET請(qǐng)求。

      $.ajax({
      type: "get",
      url: "AjaxService/36",
      contentType: "application/json; charset=utf-8",
      success: function (json) { alert(json.Name) },
      error: function (error) {
      alert("調(diào)用出錯(cuò)" + error.responseText);
      }
      });
      

        效果如下圖:

      2、POST請(qǐng)求,簡(jiǎn)單數(shù)據(jù)類型。

      var jsonMsg = { 'message': 'zhangsan' };
      var message = JSON2.stringify(jsonMsg)
      $.ajax({
          type: "POST",
          url: "AjaxService/Rest/Post",
          contentType: "application/json",
          data: message,
          dataType: "text",
          processData: false,
          success: function (json) { alert(json) },
          error: function (error) {
          alert("調(diào)用出錯(cuò)" + error.responseText);
        }
      });

        運(yùn)行結(jié)果如下圖:

      3、POST請(qǐng)求,復(fù)雜數(shù)據(jù)類型
        POST復(fù)雜數(shù)據(jù)類型與簡(jiǎn)單類型原理是一樣的。在Web頁(yè)面建構(gòu)JSON數(shù)據(jù)對(duì)象,然后將其轉(zhuǎn)換為JSON的字符串格式。
      代碼如下:

      var jsonData = { 'person': { 'Id': '36', 'Name': 'zhangsan', 'Age': '27', 'Phone': '01082667896'} };
      var message = JSON2.stringify(jsonData)
      $.ajax({
          type: "POST",
          url: "AjaxService/Post",
          contentType: "application/json; charset=utf-8",
          data: message,
          dataType: "json",
          success: function (json) { alert(json) },
          error: function (error) {
          alert("調(diào)用出錯(cuò)" + error.responseText);
        }
      });

      運(yùn)行結(jié)果如下圖:

        如同在WebService中一樣:客戶端上傳的JSON字符串格式的數(shù)據(jù),會(huì)在服務(wù)端復(fù)雜數(shù)據(jù)類型中的相應(yīng)字段中。
      這樣就通過JQ+JSON完成了與REST WCF的交互。但是有一點(diǎn)需要注意的是:在使用POST操作時(shí),在客戶端與服務(wù)端交互過程中,需要指定WebMessageBodyStyle、在GET操作時(shí),不論格式,可以不必指定。用途是:指定是否包裝參數(shù)和返回值。也就是在客戶端與服務(wù)端的交互過程中,上傳給服務(wù)端的參數(shù)以及服務(wù)端回傳給客戶端的返回值需要做怎樣的包裝操作。這一點(diǎn)非常重要,否則調(diào)用在消費(fèi)服務(wù)是會(huì)有異常。
      WebMessageBodyStyle的定義如下:

      public enum WebMessageBodyStyle
      {
        Bare,
        Wrapped,
        WrappedRequest,
        WrappedResponse
      }
      

        MSDN給出的說明如下:

      • Bare 不包裝請(qǐng)求和響應(yīng)。
      • Wrapped 包裝請(qǐng)求和響應(yīng)。
      • WrappedRequest 包裝請(qǐng)求,但不包裝響應(yīng)。
      • WrappedResponse 包裝響應(yīng),但不包裝請(qǐng)求。

        與WebService調(diào)用異同總結(jié):

      •   1、調(diào)用方式一樣。
      •   2、客戶端發(fā)送給服務(wù)端數(shù)據(jù)格式略有差別。在WebService中可以通過形如:data: "{'name':'zhangsan'}",向服務(wù)端發(fā)送請(qǐng)求,但是這種字符串格式中RESTful中是不被支持的。
      •   3、WebService調(diào)用結(jié)果通過.d獲取,即json.d。而在RESTful Service中,直接獲取,即json。
      •   4、WebService不用指定客戶端請(qǐng)求、服務(wù)端相應(yīng)的格式。而在RESTful Service中需要指定

      這個(gè)過程也不復(fù)雜,有此類開發(fā)經(jīng)驗(yàn)的人很容易。但是對(duì)初次接觸REST開發(fā)的人來說還是需要費(fèi)一番周折的。

      參考:

      http://www.west-wind.com/weblog/posts/2008/Apr/21/jQuery-AJAX-calls-to-a-WCF-REST-Service

      Jquery1.4 API手冊(cè)

      MSDN

      posted @ 2011-11-25 19:39  tyb1222  閱讀(8330)  評(píng)論(21)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产精品午夜福利小视频| 国产精品尤物乱码一区二区 | 怡红院一区二区三区在线| 噜噜噜亚洲色成人网站∨| 兴义市| 日韩视频中文字幕精品偷拍| 高清中文字幕一区二区| 国产精品人妻系列21p| 无码免费大香伊蕉在人线国产| 亚洲区综合中文字幕日日| bt天堂新版中文在线| 痉挛高潮喷水av无码免费 | 婷婷成人丁香五月综合激情| 国产强奷在线播放免费| 啊┅┅快┅┅用力啊岳网站| 国产精品一区二区久久毛片| 亚洲线精品一区二区三区| 国产福利在线观看免费第一福利| 三上悠亚在线精品二区| 亚洲一精品一区二区三区| 亚洲国产精品综合久久2007| 精品人妻伦九区久久aaa片| 国产av一区二区三区综合| 免费AV片在线观看网址| 亚洲区综合区小说区激情区 | 欧美人妻久久精品| 国产激情第一区二区三区| 爱性久久久久久久久| 亚洲无码a∨在线视频| 国产精品色三级在线观看 | 久热这里只有精品视频六| 精品国产成人午夜福利| 中文字幕无码色综合网| 亚洲 小说区 图片区 都市| 国产初高中生粉嫩无套第一次| 开心一区二区三区激情| 可以直接看的无码av| 麻豆蜜桃av蜜臀av色欲av| 成人乱码一区二区三区四区| 精品欧洲av无码一区二区| 亚洲一区在线观看青青蜜臀|