亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jQuery調用RESTful WCF示例代碼(GET方法/POST方法)

2019-11-20 21:12:06
字體:
來源:轉載
供稿:網友

不廢話了,直奔主題吧

wcf端:

近幾年比較流行restful,為了能讓ajax調用,同時也為了支持restful風格的uri,在創建一個Ajax-enabled Wcf Service后,必須手動修改svc文件,指定Factory,即:

<%@ ServiceHost Language="C#" Debug="true" Service="ajaxSample.HelloWorld" CodeBehind="HelloWorld.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>

注:如果不添加Factory,則wcf將無法用類似http://localhost/helloWorld.svc/Hello/person/name 的restful方式直接訪問。

同時還要去掉web.config中的<enableWebScript />即類似:

<system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="ajaxSample.HelloWorldAspNetAjaxBehavior">
          <!--<enableWebScript />-->
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
      multipleSiteBindingsEnabled="true" />
    <services>
      <service name="ajaxSample.HelloWorld">
        <endpoint address="" behaviorConfiguration="ajaxSample.HelloWorldAspNetAjaxBehavior"
          binding="webHttpBinding" contract="ajaxSample.HelloWorld" />
      </service>
    </services>
  </system.serviceModel>

好了,開始寫代碼,鑒于wcf調用時有GET/POST二種方式,下面把幾種常用的情況都寫一個示例方法:

復制代碼 代碼如下:

using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;

namespace ajaxSample
{
    [ServiceContract(Namespace = "http://yjmyzz.cnblogs.com/")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class HelloWorld
    {

        /// <summary>
        /// 只能Post的Restful方法
        /// </summary>
        /// <param name="person"></param>
        /// <param name="welcome"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", UriTemplate = "PostRestfulTest/{person}/{welcome}", ResponseFormat = WebMessageFormat.Json)]
        public List<string> PostRestfulTest(string person,string welcome)
        {
            List<string> result = new List<string>();

            result.Add("PostRestfulTest -> from server:");
            result.Add(person);
            result.Add(welcome);
            return result;
        }

        /// <summary>
        /// 只能Get的Restful方法
        /// </summary>
        /// <param name="person"></param>
        /// <param name="welcome"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "GET", UriTemplate = "GETRestfulTest/{person}/{welcome}", ResponseFormat = WebMessageFormat.Json)]
        public List<string> GETRestfulTest(string person, string welcome)
        {
            List<string> result = new List<string>();

            result.Add("GETRestfulTest -> from server:");
            result.Add(person);
            result.Add(welcome);
            return result;
        }

        /// <summary>
        /// 即可Get與Post的Restful方法
        /// </summary>
        /// <param name="person"></param>
        /// <param name="welcome"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "*", UriTemplate = "RestfulTest/{person}/{welcome}", ResponseFormat = WebMessageFormat.Json)]
        public List<string> RestfulTest(string person, string welcome)
        {
            List<string> result = new List<string>();

            result.Add("RestfulTest -> from server:");
            result.Add(person);
            result.Add(welcome);
            return result;
        }

 
        /// <summary>
        /// 只能Post的常規方法(注:Post方式,BodyStyle必須設置成WrappedRequest或Wrapped)
        /// </summary>
        /// <param name="person"></param>
        /// <param name="welcome"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle=WebMessageBodyStyle.WrappedRequest)]
        public List<string> PostTest(string person, string welcome)
        {
            List<string> result = new List<string>();

            result.Add("PostRestfulTest -> from server:");
            result.Add(person);
            result.Add(welcome);
            return result;
        }

        /// <summary>
        /// 只能Get的常規方法
        /// </summary>
        /// <param name="person"></param>
        /// <param name="welcome"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)]
        public List<string> GETTest(string person, string welcome)
        {
            List<string> result = new List<string>();

            result.Add("GETTest -> from server:");
            result.Add(person);
            result.Add(welcome);
            return result;
        }

         

         
    }
}

jQuery調用代碼:
復制代碼 代碼如下:

<script type="text/javascript">
    $().ready(function () {

 
        $.post("HelloWorld.svc/PostRestfulTest/111/222", function (data) {
            alert("PostRestfulTest調用成功,返回值為:" + data);
        })

        $.get("HelloWorld.svc/GETRestfulTest/333/444", function (data) {
            alert("GETRestfulTest調用成功,返回值為:" + data);
        })

        $.get("HelloWorld.svc/RestfulTest/555/666", function (data) {
            alert("RestfulTest GET方式調用成功,返回值為:" + data);
        })

 
        $.post("HelloWorld.svc/RestfulTest/777/888", function (data) {
            alert("RestfulTest POST方式調用成功,返回值為:" + data);
        })

 
        $.get("HelloWorld.svc/GETTest", { person: "aaa", welcome: "bbb" }, function (data) {
            alert("GETTest 調用成功,返回值為:" + data);
        });

 
        $.ajax({
            url: "HelloWorld.svc/PostTest",
            type: "POST",
            contentType: "application/json",
            data: '{"person":"ccc","welcome":"ddd"}',
            dataType: "html",
            success: function (data) { alert("PostTest調用成功,返回值為:" + data); }
        });
    })
</script>

有時候,WCF暴露的方法中可能需要一些敏感信息做為參數(比如用戶名/用戶ID之類),這時如果直接用js來調用wcf,可能會把這部分信息泄漏在客戶端,這種場景下,我們也經常用一個服務端的ashx來做中轉

TestService.svc

復制代碼 代碼如下:

using System.ServiceModel;

namespace ashx_jQuery
{
     [ServiceContract]
    public class TestService 
    {
         /// <summary>
         /// 獲取當前用戶指定月份的工資
         /// </summary>
         /// <param name="userId"></param>
         /// <param name="month"></param>
         /// <returns></returns>
         [OperationContract]
        public double GetSalary(int userId,int month)
        {
            if (month == 1)//只是演示而已
            {
                return 5000;
            }
            else
            {
                return 1000;
            }
        }
    }
}

AjaxProcess.ashx
復制代碼 代碼如下:

using System.Web;

namespace ashx_jQuery
{
    /// <summary>
    /// Summary description for AjaxProcess
    /// </summary>
    public class AjaxProcess : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string month = context.Request["month"];

            TestService wcf = new TestService();
            double salary = wcf.GetSalary(GetUserId(), int.Parse(month));
            context.Response.Write("{salary:" + salary + "}");
        }

 
        /// <summary>
        /// 獲取當前的用戶ID
        /// </summary>
        /// <returns></returns>
        private int GetUserId() 
        {
            return 1;
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

jQuery調用:
復制代碼 代碼如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="ashx_jQuery._default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>jQuery ashx Sample</title>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></script>
    <script type="text/javascript">
        $().ready(function () {
            $("#btnTest").click(function () {
                $.post(
                    "AjaxProcess.ashx",
                    { month:1 },
                    function (e) {
                        var d = eval("(" + e + ")");
                        alert(d.salary);
                    }, "html");
            })
        })
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <input type="button" value="GetSalary" id="btnTest"/>
    </form>
</body>
</html>

示例代碼:點擊下載 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美亚洲另类激情另类| 91精品国产91| 日韩av影视综合网| 色悠悠久久88| 一本色道久久88综合日韩精品| 欧美日韩精品在线观看| 欧美成人性生活| 91精品视频在线免费观看| 国产精品aaaa| 日韩免费观看网站| 97精品国产97久久久久久| 久久精品美女视频网站| 日韩欧美一区二区三区| 欧美日韩在线一区| 久久精品久久久久电影| 国产精品av免费在线观看| 午夜精品一区二区三区在线视频| 色先锋久久影院av| 91在线观看免费高清完整版在线观看| 亚洲欧美一区二区精品久久久| 亚洲性猛交xxxxwww| 亚洲网站在线播放| 精品久久久999| 中文字幕在线观看亚洲| 欧美日韩国产综合视频在线观看中文| 精品无人国产偷自产在线| 亚洲丝袜av一区| 亚洲一区二区三区sesese| 中文字幕日韩在线视频| 日韩欧美亚洲国产一区| 欧美另类在线播放| 日韩中文有码在线视频| 国产精品免费小视频| 国产69精品久久久久久| 日本久久中文字幕| 国产午夜一区二区| 中文字幕久热精品在线视频| 国产成人精品一区| 亚洲国产婷婷香蕉久久久久久| 国产在线播放不卡| 精品视频在线观看日韩| 日韩电影在线观看永久视频免费网站| 欧美日韩国产二区| 91精品在线观| 亚洲国产日韩一区| 91精品国产高清久久久久久91| 国外色69视频在线观看| 成人免费高清完整版在线观看| www.日本久久久久com.| 久久深夜福利免费观看| 日本久久亚洲电影| 永久免费精品影视网站| 97精品国产97久久久久久| 日韩视频在线免费观看| 狠狠做深爱婷婷久久综合一区| 亚洲人精选亚洲人成在线| 国产精品嫩草影院久久久| 97在线看福利| 国产精品一区二区久久久| 国产日韩换脸av一区在线观看| 国产精品电影久久久久电影网| 欧美激情一区二区久久久| 美女久久久久久久久久久| 97超级碰在线看视频免费在线看| 在线观看免费高清视频97| 中文字幕av一区二区三区谷原希美| 国产精品免费一区豆花| 欧美日本中文字幕| 久久免费视频网站| 日韩av一区在线观看| 国产一区二区丝袜高跟鞋图片| 国产高清视频一区三区| 亚洲国产精品999| 亚洲成色777777在线观看影院| 97超碰国产精品女人人人爽| 亚洲福利在线看| 精品久久久久久亚洲精品| 日韩欧美亚洲综合| 欧美在线欧美在线| 精品久久在线播放| 国产精品一区二区三区久久久| 久久久久免费视频| 日韩欧美中文第一页| 亚洲老板91色精品久久| 精品国产欧美成人夜夜嗨| 青草青草久热精品视频在线网站| 91精品国产成人www| 欧美精品情趣视频| 亚洲电影免费观看高清完整版| 久久五月天综合| 国产精品入口福利| 91热福利电影| 亚洲跨种族黑人xxx| 日韩中文理论片| 91亚洲一区精品| 欧美wwwwww| 性欧美xxxx| 激情亚洲一区二区三区四区| 欧美人在线观看| 精品亚洲一区二区三区在线观看| 国产日韩在线亚洲字幕中文| 欧美成人精品影院| 精品无人国产偷自产在线| 一区二区三区黄色| 亚洲欧美日韩爽爽影院| 欧美午夜www高清视频| 亚洲精品乱码久久久久久按摩观| 日韩hd视频在线观看| 欧美日韩亚洲一区二| 国产婷婷色综合av蜜臀av| 国产午夜精品免费一区二区三区| 国产精品欧美激情在线播放| 少妇高潮 亚洲精品| 国产精品一区二区久久| 亚洲男人第一av网站| 欧美午夜美女看片| 欧美日产国产成人免费图片| 色在人av网站天堂精品| 4388成人网| 久久久极品av| 亚洲精品国偷自产在线99热| 中文字幕久久精品| 欧美性猛交丰臀xxxxx网站| 美女国内精品自产拍在线播放| 最近2019年手机中文字幕| 亚洲高清一二三区| 2019亚洲日韩新视频| 亚洲精品国产精品国自产在线| 欧美孕妇与黑人孕交| 欧美激情啊啊啊| 九九热在线精品视频| 久久久精品国产亚洲| 亚洲精品久久7777777| 91精品国产网站| 久久久久久久久久久免费精品| 欧美性做爰毛片| 国产精品扒开腿做爽爽爽男男| 亚洲欧美在线免费| 欧美成人午夜免费视在线看片| 久久精品男人天堂| 欧美精品videosex性欧美| 欧美又大粗又爽又黄大片视频| 国产精品扒开腿做爽爽爽的视频| 国产成人av网址| 欧美日韩精品国产| 亚洲人成啪啪网站| 91亚洲永久免费精品| 日韩国产在线播放| 亚洲人午夜精品| 亚洲精品www久久久久久广东| 日韩久久午夜影院| 中文字幕一精品亚洲无线一区| 91视频免费网站| 亚洲色图50p| 国产不卡视频在线| 欧美电影在线免费观看网站| 国产精品久久久久久久久| 日韩高清电影免费观看完整版| 亚洲视频在线免费观看| 97视频网站入口| 最好看的2019的中文字幕视频| 久久久久亚洲精品国产| 91黑丝高跟在线| 久久99热精品|