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

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

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

      Extjs4 跨域調用WCF

      Javascript跨域調用的問題折騰了我好幾天,主要參考了博客園大牛jillzhang的兩篇博客

       

      博客中沒有提供工程源碼下載,我把其中的代碼拷下來運行,extjs部分始終取不到數據。

      可能Extjs4和WCF都有了一些變化,而這兩篇博客比較老,所以運行不了。

      經過一些修改(主要是加了WCF配置文件的部分),終于可以運行下面這個Grid分頁的例子了。

       

      1. Extjs4 部分的代碼

      主要有2部分:一部分是html,一部分是js

      html部分代碼

      <!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>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Paging Grid-MHZG.NET</title>
      <link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" />
      <script type="text/javascript" src="extjs/bootstrap.js"></script>
      <script type="text/javascript" src="extjs/ext-all.js"></script>
      <script type="text/javascript" src="extjs/locale/ext-lang-zh_CN.js"></script>
      <script type="text/javascript" src="paging.js"></script>
      </head>
      <body>
      <div id="demo"></div>
      </body>
      </html>

       

      js部分代碼,即paging.js的代碼。其他js和css文件是Ext框架自帶的。

      Ext.require([
          'Ext.grid.*',
          'Ext.toolbar.Paging',
          'Ext.data.*'
      ]);
      Ext.onReady(function(){
          Ext.define('MyData',{
              extend: 'Ext.data.Model',
              fields: [
                  'title','author',
                  //第一個字段需要指定mapping,其他字段,可以省略掉。
                  {name:'hits',type: 'int'},
                   'addtime'
              ]
          });
          
          //創建數據源
          var store = Ext.create('Ext.data.Store', {
              //分頁大小
              pageSize: 50,
              model: 'MyData',
              //是否在服務端排序
              remoteSort: true,
              proxy: {
                  type: 'jsonp',
                  url: 'http://localhost:4124/Service1.svc/Paging',
                  
                  reader: {
                      root: 'items',
                      totalProperty  : 'total'
                  },
                  simpleSortMode: true
              },
              sorters: [{
                  //排序字段。
                  property: 'hits',
                  //排序類型,默認為 ASC
                  direction: 'DESC'
              }]
          });
          
          //創建Grid
          var grid = Ext.create('Ext.grid.Panel',{
              store: store,
              columns: [
                  {text: "標題", width: 120, dataIndex: 'title', sortable: true},
                  {text: "作者", flex: 200, dataIndex: 'author', sortable: false},
                  {text: "點擊數", width: 100, dataIndex: 'hits', sortable: true},
                  {text: "添加時間", width: 100, dataIndex: 'addtime', sortable: true}
              ],
              height:400,
              width:520,
              x:20,
              y:40,
              title: 'ExtJS4 Grid 分頁示例',
              disableSelection: true,
              loadMask: true,
              renderTo: 'demo',
              viewConfig: {
                  id: 'gv',
                  trackOver: false,
                  stripeRows: false
              },
              
              bbar: Ext.create('Ext.PagingToolbar', {
                  store: store,
                  displayInfo: true,
                  displayMsg: '顯示 {0} - {1} 條,共計 {2} 條',
                  emptyMsg: "沒有數據"
              })
          })
          store.loadPage(1);
      })

       

      其中關鍵部分即:

              proxy: {
                  type: 'jsonp',
                  url: 'http://localhost:4124/Service1.svc/Paging',

      type設為jsonp,則使用的Ext.data.ScriptTagProxy這個代理。

      url為全路徑,表示可以跨域調用。

       

      2. WCF代碼部分

      Service1.svc

      <%@ ServiceHost Language="C#" Debug="true" Service="Service1" CodeBehind="Service1.svc.cs" %>

       

      Service1.svc.cs

      using System.ServiceModel;
      using System.ServiceModel.Web;
      using System.Text;
      using System.IO;
      using System.ServiceModel.Activation;
      
      
      [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
      public class Service1:IService1
      {
          public Stream Paging(string _dc, int start, int limit, int page, string callback)
          {
              
              StringBuilder sb = new StringBuilder();
              sb.Append("{'total':1000, 'items': [ ");
      
              for (int i = start; i < start+limit - 1; i++)
              {
                  sb.Append("{ 'title': ").Append("'title").Append(i).Append("',");
                  sb.Append(" 'author': ").Append("'author").Append(i).Append("',");
                  sb.Append(" 'hits': ").Append(i).Append(",");
                  sb.Append(" 'addtime':'2011/1/1'}, ");
              }
      
              sb.Append("{ 'title': ").Append("'title").Append(start + limit).Append("',");
              sb.Append(" 'author': ").Append("'author").Append(start + limit).Append("',");
              sb.Append(" 'hits': ").Append(start + limit).Append(",");
              sb.Append(" 'addtime':'2011/1/1'} ");
              sb.Append("] }");
      
      
              string returnStr = callback + "(" + sb.ToString() + ")";
              var ms = new MemoryStream();
              StreamWriter sw = new StreamWriter(ms);
              sw.AutoFlush = true;
              sw.Write(returnStr);
              ms.Position = 0;
              WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain";
              return ms;
          }
      }
      
      [ServiceContract(Namespace = "")]
      public interface IService1
      {
          [OperationContract]
          [WebGet(BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
          Stream Paging(string _dc, int start, int limit, int page, string callback);
      }

       

      3. WCF配置部分,即Web.config中system.serviceModel部分

        <system.serviceModel>
          <behaviors>
            <serviceBehaviors>
              <behavior>
                <serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
                <serviceDebug includeExceptionDetailInFaults="false"/>
              </behavior>
            </serviceBehaviors>
            <endpointBehaviors>
              <behavior name="jsonServiceBehavior">
                <enableWebScript/>
              </behavior>
            </endpointBehaviors>
          </behaviors>
          <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
          <services>
            <service name="Service1">
              <endpoint binding="webHttpBinding" contract="IService1" behaviorConfiguration="jsonServiceBehavior"/>
            </service>
          </services>    
        </system.serviceModel>

       

      4. 運行效果

      啟動上面的WCF服務,根據實際的端口號修改Extjs部分的url,然后打開Extjs部分的html即可。

      運行界面如下:

      初始化時

      image 

      換頁時

      image

       

      5. 總結

      Extjs部分沒有什么特別的地方,主要是WCF部分有以下幾點需要注意:

      1. 對于被跨域調用的契約方法,加上[WebGet]atrribute
      2. 對于被跨域調用的實際類,加上[AspNetCompatibilityRequirements]atrribute
      3. 對于被跨域調用的服務,配置中必須使用webHttpBinding方式,basicHttpBinding不行。
      4. 對于被跨域調用的服務,配置中需要關聯enableWebScript的behavior。

       

      總體感覺比較麻煩,如果有好的方法,歡迎指出!!

      posted @ 2011-08-30 22:56  wang_yb  閱讀(2224)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美色欧美亚洲高清在线观看| 国产午夜A理论毛片| 国产精品爆乳奶水无码视频免费 | 青州市| 久久精品丝袜高跟鞋| 香蕉亚洲欧洲在线一区| 日韩有码国产精品一区| 亚洲欧美综合中文| 亚洲精品综合第一国产综合| 久久婷婷大香萑太香蕉AV人| 欧美激情精品久久久久久| 国产午夜A理论毛片| 欧美性潮喷xxxxx免费视频看| 国产精品区一区第一页| 色伦专区97中文字幕| 宝清县| 久久久久国色av免费观看性色| 亚洲天堂亚洲天堂亚洲色图| 四虎精品国产永久在线观看| 台北市| 国产午夜亚洲精品福利| 人妻系列无码专区69影院| jlzz大jlzz大全免费| 日韩人妻精品中文字幕| 国产麻豆精品手机在线观看| 在线观看AV永久免费| 安远县| 国产SM重味一区二区三区| 免费无码一区无码东京热| 天天爽夜夜爽人人爽一区二区| 99久久精品国产熟女拳交| 成人国产精品中文字幕| 国产精品一区二区无线| 国产精品七七在线播放| 欧洲熟妇熟女久久精品综合 | 遂平县| 亚洲男人的天堂网站| 精品无码国产污污污免费| 艳妇臀荡乳欲伦交换在线播放| 亚洲中文一区二区av| 精品视频一区二区三区不卡|