【原創經驗分享】JQuery(Ajax)調用WCF服務


        最近在學習這個WCF,由於剛開始學 不久,發現網上的一些WCF教程都比較簡單,感覺功能跟WebService沒什么特別大的區別,但是看網上的介紹,就說WCF比WebService牛逼多少多少,反正我剛開始入門,就沒覺得多大區別啦,這次寫的東西跟WebService一樣,我們寫了一個WCF,那當然就是要用的,要用的話,當然不能只能在.NET平台下用了,必須跨平台呀,所以,Ajax能調用,這個基本的要求就必須要實現的了,所以,本次經驗分享就是寫JQuery的Ajax調用WCF的服務了。

         一、新建一個WCF,如下:
 

 
    二、然后把項目自動生成的兩個例子刪了,如下圖:
 
 
三、然后新建一個:AjaxService.svc,如下圖:
 
 
新建之后,會提示這個,選擇“全是“即可,然后他就會自動更改Web.config里面的一些參數,用戶Ajax跨域的,基本上就是這些了,如下圖:
 
 
 
四:現在我們需要配置Web.config的一些參數,首先就是配置Forms身份驗證,這個必須要配置,否者調用不成功,如下圖:
 
<authentication mode="Forms" />
接着再配置一下綁定,這里,我們使用圖形的方法來綁定,否則完全代碼配置,會頭暈的,首先在Web.config處右鍵,如下圖:
 
 
在“綁定”處,新建綁定,如下圖:
 
 
 
選擇:webHttpBinding,如下圖:
 
 
 
然后,確定,然后我們修改一下這個綁定的名稱,不然后續如果我們越來越多WCF文件的時候,就會傻傻分不清楚了,這里我們改名為:AjaxServiceBinding,此外還需要把“crossDomainScriptAccessEnabled”設置為“true”,如下圖:
 
 
 
接着,我們去到"服務",然后編輯一下“終結點”的配置,這里面需要修改兩個地方,第一個:就是給這個終結點一個Name,我們這里就以WCF文件的名稱“AjaxService”來命名,第二個就是要在“BindingConfiguration”處綁定我們剛剛配置的那個“綁定”,這樣服務才能正常使用,如下圖:
 
 
 
 
五、到此為止,Web.config的配置就告一段落,如果需要配置多個WCF文件,那就重復以上操作,下面,我們轉到AjaxService.svc中去編寫我們要運用到的方法。
首先,我們編寫一個不需要傳遞參數的方法,全文如下圖:
 
 
這里提供文字類,以免學習過程中由於代碼敲錯的報錯影響學習效果:
 
 //下面這個需要我們手動添加
    [JavascriptCallbackBehavior(UrlParameterName = "jsoncallback")] 
 
        //首先我們創建一個不傳遞參數的WCF方法,如下:
        [OperationContract]
        [ WebGet (ResponseFormat =  WebMessageFormat .Json)]
 
到這里,一個不需要傳遞參數的方法,結束,接下來,就是Ajax的調用,調用也很簡單,我們先把這個WCF跑起來,看看他的服務地址是多少:
首先,右鍵→“瀏覽器 ”訪問:
 
 
然后我們就看到這個,看到這個,代表我們這個WCF服務已經成功創建了(日后正式使用,發布在IIS就可以了,跟發布普通網站一樣。),如下圖:
 
 
好,從瀏覽器,我們看到他的服務地址是: http://localhost:5603/AjaxService.svc,
 
那么,我們就去新建一個HTML來試試看能否正常調用:
 
六、新建一個HTML,怎么簡單怎么來,我們就弄一個button和一個js的方法,代碼如下(JQuery自己引用,這里我用的是本地的):
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title></title>
        <script src="js/jquery-1.8.3.min.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            function fGetWCF() {
                 $.getJSON( "http://localhost:5603/AjaxService.svc/MyFirstWCFFunction?jsoncallback=?" ,
                    function(data) {
                        alert(data);
                        var vData JSON.stringify(data);
                        alert(vData);
                    });
            }
        </script>
    </head>
 
    <body>
        <input type="button" name="wcf" id="wcf" value="無參數調用WCF測試" onclick="fGetWCF()/>
    </body>
 
</html> 
 
 
然后我們把頁面跑起來,點擊“”,就會看到彈出下面這個:
 
 
代表我們調用成功了,這個時候,我們可以暗爽一下了。
 
七:但是,萬惡的但是出現了。嗯,沒錯,我們項目中經常用到的是,肯定要傳參的了,不傳參怎么用啊,你說是不是,所以,下面我就講到傳參的了。
 
萬幸的是,這次我們的Web.config不需要動他了,我們只需要在新方法里面,做一些小改動即可,如下(自己比較一下,需要傳參與不需要傳參的區別哈):
        //接下來,我們就新建一個需要傳參的方法,如下:
        [OperationContract]
        [WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
        public string MySecondWCFFunction(string name)
        {
            string strMsg = string.Format("我的第二個WCF方法,我【{0}】調用成功啦,好開心,O(∩_∩)O哈哈~", name);
 
            // 在此處添加操作實現
            return strMsg;
        } 
 
 然后HTML的代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title></title>
        <script src="js/jquery-1.8.3.min.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            function fGetWCF() {
                $.getJSON("http://localhost:5603/AjaxService.svc/MyFirstWCFFunction?jsoncallback=?",
                    function(data) {
                        alert(data);
                        var vData JSON.stringify(data);
                        alert(vData);
                    });
            }
 
            function fGetWCF2() {
                $.getJSON("http://localhost:5603/AjaxService.svc/MySecondWCFFunction?jsoncallback=?", {
                        name'南宮蕭塵'
                    },
                    function(data) {
                        alert(data);
                        var vData JSON.stringify(data);
                        alert(vData);
                    });
            }
        </script>
    </head>
 
    <body>
        <input type="button" name="wcf" id="wcf" value="無參數調用WCF測試" onclick="fGetWCF()/>
        <input type="button" name="wcf" id="wcf" value="有參數調用WCF測試" onclick="fGetWCF2()/>
    </body>
 
</html>  
 
 
 
到這里,就大功告成啦,接下來的東西,就由大家自己去展開拓展了,本次經驗分享到此結束。
 
我新建一個QQ群,如果有問題,可以在群里提。如果合適,也會根據大家提的比較多的問題,來寫篇博文,幫助更多的人,群號:275523437
點擊鏈接加入群【.Net,MVC,EasyUI,MUI,Html,JS】http://jq.qq.com/?_wv=1027&k=2A0RbLd
 
  
(如果有私活,或者一起合作的,也可以私信找我呀,嘿嘿);
 
作者:南宮蕭塵  
E-mail:314791147@qq.com
QQ:314791147
日期:2016-05-16
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM