• <ul id="cgeq2"></ul>
  • 歡迎您光臨深圳塔燈網(wǎng)絡(luò)科技有限公司!
    電話圖標(biāo) 余先生:13699882642

    網(wǎng)站百科

    為您解碼網(wǎng)站建設(shè)的點(diǎn)點(diǎn)滴滴

    一個(gè)通過JSONP跨域調(diào)用WCF REST服務(wù)的例子(以jQuery為例)

    發(fā)表日期:2019-09 文章編輯:小燈 瀏覽次數(shù):2166

    JSONP(JSON with Padding)可以看成是JSON的一種“使用模式”,用以解決“跨域訪問”的問題,這篇簡單的文章給出一個(gè)簡單的例子用于模擬如何通過jQuery以JSONP的訪問調(diào)用一個(gè)WCF REST服務(wù)。[源代碼從這里下載]

    在這個(gè)例子中,我們將定義一個(gè)用于返回所有員工信息的服務(wù),下面是用于表示員工信息的Employee的類型和契約接口。契約接口IEmployees的GetAll操作用以返回所有員工列表,我們指定了Uri模板并將回復(fù)消息格式設(shè)置為JSON。

     1: using System.Collections.Generic;
     2: using System.ServiceModel;
     3: using System.ServiceModel.Web;
     4: namespace Artech.WcfServices.Service.Interface
     5: {
     6: [ServiceContract]
     7: public interface IEmployees
     8: {
     9: [WebGet(UriTemplate = "all",ResponseFormat =WebMessageFormat.Json)]
    10: IEnumerable<Employee> GetAll();
    11: }
    12: public class Employee
    13: {
    14: public string Id { get; set; }
    15: public string Name { get; set; }
    16: public string Department { get; set; }
    17: public string Grade { get; set; }
    18: }
    19: }

    在如下所示的服務(wù)類型EmployeesService 中,我們直接讓服務(wù)操作GetAll返回一個(gè)包含3個(gè)Employee對象的列表。

     1: using System.Collections.Generic;
     2: using Artech.WcfServices.Service.Interface;
     3: namespace Artech.WcfServices.Service
     4: {
     5: public class EmployeesService : IEmployees
     6: {
     7: public IEnumerable<Employee> GetAll()
     8: {
     9: return new List<Employee>
    10: {
    11: new Employee{ Id = "001", Name="張三", Department="開發(fā)部", Grade = "G6"},
    12: new Employee{ Id = "002", Name="李四", Department="人事部", Grade = "G7"}, 
    13: new Employee{ Id = "003", Name="王五", Department="銷售部", Grade = "G8"}
    14: };
    15: }
    16: }
    17: }

    我們通過控制臺程序?qū)Ψ?wù)進(jìn)行寄宿。從下面的配置可以看到我們采用了標(biāo)準(zhǔn)終結(jié)點(diǎn)WebHttpEndpoint。為了讓服務(wù)具有跨域支持的能力,我們必須將標(biāo)準(zhǔn)終結(jié)點(diǎn)的crossDomainScriptAccessEnabled屬性設(shè)置為True。WebHttpBinding也具有同名的屬性,如果直接使用WebHttpBinding也需要將該屬性設(shè)置為True。

     1: <configuration>
     2: <system.serviceModel>
     3: <standardEndpoints>
     4: <webHttpEndpoint>
     5: <standardEndpoint crossDomainScriptAccessEnabled="true"/>
     6: </webHttpEndpoint>
     7: </standardEndpoints>
     8: <bindings>
     9: <webHttpBinding>
    10: <binding crossDomainScriptAccessEnabled="true" />
    11: </webHttpBinding>
    12: </bindings>
    13: <services>
    14: <service name="Artech.WcfServices.Service.EmployeesService">
    15: <endpoint kind="webHttpEndpoint" 
    16: address="http://127.0.0.1:3721/employees"
    17: contract="Artech.WcfServices.Service.Interface.IEmployees"/>
    18: </service>
    19: </services>
    20: </system.serviceModel>
    21: </configuration>

    在客戶端,我們在一個(gè)Web頁面中通過jQuery進(jìn)行Ajax調(diào)用這個(gè)服務(wù),并將得到的員工列表顯示在一個(gè)表格中。出CSS之外的頁面代碼如下所示,需要注意的是在進(jìn)行Ajax調(diào)用的使用將dataType選項(xiàng)設(shè)置成“jsonp”,而不是“json”。

     1: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2: <html xmlns="http://www.w3.org/1999/xhtml">
     3: <head>
     4: <title>員工列表</title>
     5: <style type="text/css">
     6:...
     7: </style>
     8: <script src="Scripts/jquery-1.7.1.js" type="text/javascript"></script>
     9: <script type="text/javascript">
    10: $(function () {
    11: $.ajax({
    12: type: "get",
    13: url: "http://127.0.0.1:3721/employees/all",
    14: dataType: "jsonp",
    15: success: function (employees) {
    16: $.each(employees, function (index, value) {
    17: var detailUrl = "detail.html?id=" + value.Id;
    18: var html = "<tr><td>";
    19: html += value.Id + "</td><td>";
    20: html += "<a href='" + detailUrl + "'>" + value.Name + "</a></td><td>";
    21: html += value.Grade + "</td><td>";
    22: html += value.Department + "</td></tr>";
    23: $("#employees").append(html);
    24: });
    25: $("#employees tr:odd").addClass("oddRow");
    26: }
    27: });
    28: });
    29:</script>
    30: </head>
    31: <body>
    32: <table id="employees" width="600px">
    33: <tr>
    34: <th>ID</th>
    35: <th>姓名</th>
    36: <th>級別</th>
    37: <th>部門</th>
    38: </tr>
    39: </table>
    40: </body>
    41: </html>

    當(dāng)服務(wù)啟動(dòng)后在瀏覽器中顯示上面這個(gè)Web頁面,會得到如下所示的員工列表。

    image


    本頁內(nèi)容由塔燈網(wǎng)絡(luò)科技有限公司通過網(wǎng)絡(luò)收集編輯所得,所有資料僅供用戶學(xué)習(xí)參考,本站不擁有所有權(quán),如您認(rèn)為本網(wǎng)頁中由涉嫌抄襲的內(nèi)容,請及時(shí)與我們聯(lián)系,并提供相關(guān)證據(jù),工作人員會在5工作日內(nèi)聯(lián)系您,一經(jīng)查實(shí),本站立刻刪除侵權(quán)內(nèi)容。本文鏈接:http://www.juherenli.com/19693.html
    相關(guān)開發(fā)語言
     八年  行業(yè)經(jīng)驗(yàn)

    多一份參考,總有益處

    聯(lián)系深圳網(wǎng)站公司塔燈網(wǎng)絡(luò),免費(fèi)獲得網(wǎng)站建設(shè)方案及報(bào)價(jià)

    咨詢相關(guān)問題或預(yù)約面談,可以通過以下方式與我們聯(lián)系

    業(yè)務(wù)熱線:余經(jīng)理:13699882642

    Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

    国产精品亚洲专区在线观看| 7m凹凸精品分类大全免费| 97在线精品视频| 久久最新精品国产| 无码精品A∨在线观看| 亚洲精品不卡视频| 2021久久精品国产99国产精品| 精品少妇人妻AV一区二区三区| 精品久久免费视频| 国产精品美女久久久久AV福利| 国精品无码一区二区三区在线| 无码国内精品久久人妻| 日本阿v精品视频在线观看| 九九热线精品视频16| 日韩人妻无码精品无码中文字幕| 国精品产露脸自拍| 99久久99久久免费精品小说| 思思久久96热在精品国产| 伊人久久大香线蕉精品不卡| 久久精品人人做人人爽电影| 国产精品久久亚洲不卡动漫| 国产精品一区二区在线观看| 日本无码小泬粉嫩精品图| 91大神精品视频| 国产精品久久毛片| 久久精品国产福利国产秒| 国产精品久久久久久福利69堂| 午夜精品久久久久9999高清| 国产精品露脸国语对白| 亚洲综合一区国产精品| 精品久久久久久99人妻| 精品人妻大屁股白浆无码| 国产精品宅男在线观看| 在线观看国产精品日韩av| 精品国产福利片在线观看| 国产av无码专区亚洲国产精品| 99re最新地址精品视频| 国产成人精品亚洲| 亚洲AV日韩精品久久久久久久| 日韩精品中文字幕无码专区| 国产精品福利自产拍在线观看|