知识大全 ExtJs与WCF之间的跨域访问

Posted 项目

篇首语:丈夫志四海,万里犹比邻。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ExtJs与WCF之间的跨域访问相关的知识,希望对你有一定的参考价值。

ExtJs与WCF之间的跨域访问  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在前面文章ExtJs与WCF之间的跨域访问已经通过服务端代理的方式解决了ExtJs与WCF跨域访问的问题 那个方案看起来并不怎么优雅 而当我在写过用Restful方式调用WCF进行上传下载后 愕然发现原来WCF支持原生数据(Raw)的返回 这就解决了ExtJs与Wcf之间进行跨域调用中的难题 返回数据必须满足<script>格式 下面根据ExtJs与WCF之间的跨域访问中实现的项目 通过Stream和ContentType的联合使用 返回原生数据给Extjs 从而实现跨域调用

  第一步 在PageGridService svc后台代码中 添加操作契约GetProductsByPageCorssDomain 代码为                  [OperationContract]                [WebInvoke(Method = * ResponseFormat = WebMessageFormat Json                UriTemplate = GetProductsByPageCorssDomain?start=start&limit=limit&callback=callback )]                public Stream GetProductsByPageCorssDomain(int start int limit string callback)                                    ProductsDataContext productDbContext = new ProductsDataContext();                    IQueryable<Product> res = productDbContext Product Select(product => product);                    PageData<Product[]> returnData = new PageData<Product[]>();                    returnData TotolRecord = res ToArray<Product>() Length;                    res = res Skip<Product>(start);                    res = res Take<Product>(limit);                    returnData Data = res ToArray<Product>();                    System Runtime Serialization Json DataContractJsonSerializer formater = new System Runtime Serialization Json DataContractJsonSerializer(typeof(PageData<Product[]>));                    MemoryStream ms = new MemoryStream();                    formater WriteObject(ms returnData);                    ms Position = ;                    StreamReader sr = new StreamReader(ms);                    string objContent = sr ReadToEnd();                    string returnStr = callback+ ( +objContent+ ) ;                    sr Close();                    ms = new MemoryStream();                    StreamWriter sw = new StreamWriter(ms);                    sw AutoFlush = true;                    sw Write(returnStr);                    ms Position = ;                    WebOperationContext Current OutgoingResponse ContentType = text/plain ;                    return ms;               

  第二步 在项目中创建一个新的页面 PageGridCo 代码为          <!DOCTYPE PUBLIC //W C//DTD XHTML Transitional//EN transitional dtd >        < xmlns= >        <head>            <title>ExtJs+WCF+LINQ打造分页Grid</title>            <link rel= stylesheet type= text/css />            <script type= text/javascript src= adapter/ext/ext base js charset= gb ></script>            <script type= text/javascript src= ext all debug js charset= gb ></script>            <link rel= stylesheet type= text/css />            <script type= text/javascript src= shared/examples js charset= gb ></script>            <script type= text/javascript src= PageGridCrossDomainWithRow js charset= gb ></script>        </head>        <body>            <h >                ExtJs+WCF+LINQ打造分页跨域Grid</h >            <div id= page grid >            </div>        </body>        </>

  第三步 在项目中创建一个新的js脚本文件 PageGridCrossDomainWithRow js

            /*         * Ext JS Library          * Copyright(c) Ext JS LLC          *          *         *          */         Ext onReady(function()           var proxy = new Ext data ScriptTagProxy(             url:            );           var reader = new Ext data JsonReader(             root: Data totalProperty : TotolRecord              [               name: ProductID                name: Name                name: ProductNumber                name: MakeFlag                name: FinishedGoodsFlag                name: Color                name: SafetyStockLevel                name: ReorderPoint                name: StandardCost                name: ListPrice                name: Size                name: SizeUnitMeasureCode                name: Weight                name: DaysToManufacture                name: ProductLine                name: Class                name: Style                name: Weight                name: ProductSubcategoryID                name: ProductModelID                name: SellStartDate                name: SellEndDate                name: DiscontinuedDate                name: rowguid                name: ModifiedDate              ]           );           var store = new Ext data Store(             proxy:proxy reader:reader           );           // create the Grid            var grid = new Ext grid GridPanel(                store: store                 columns: [                    id: ProductID header: 编号 width: sortable: true dataIndex: ProductID                     header: 名称 width: sortable: true dataIndex: Name                     header: 产品编码 width: sortable: true dataIndex: ProductNumber                     header: 是否标记 width: sortable: true dataIndex: MakeFlag                     header: 颜色 width: sortable: true dataIndex: Color                     header: 数量 width: sortable: true dataIndex: ReorderPoint                     header: 单价 width: sortable: true renderer: userMoney dataIndex: StandardCost                 ]                 stripeRows: true                 autoExpandColumn: ProductID                 height:                 width:                 title: 产品信息                 viewConfig:                                  columnsText: 列                   sortAscText: 升序                   sortDescText: 降序                                 bbar: new Ext PagingToolbar(                    pageSize:                     store: store                     displayInfo: true                     displayMsg: 总记录数 of                     emptyMsg: 没有记录                 )            );            grid render( page grid );            //载入            store load(params:start: limit: );            grid getSelectionModel() selectFirstRow();         );

  接下来 浏览PageGridCo 便可以得到如下运行结果

  两种方案对比

cha138/Article/program/ASP/201311/21689

相关参考

知识大全 ASP.NET后台代码实现XmlHttp跨域访问

ASP.NET后台代码实现XmlHttp跨域访问  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 解析Extjs与php数据交互(增删查改)

解析Extjs与php数据交互(增删查改)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  代码如

知识大全 深入extjs与php参数交互的详解

代码如下:<><head><title>HelloWorld</title><metaequiv="ContentType"content="te

知识大全 JavaScript跨域问题的解决方案

JavaScript跨域问题的解决方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JS跨域问

知识大全 js操作iframe的一些方法介绍

  获得iframe的window对象存在跨域访问限制  chromeiframeElementcontentWindowfirefoxiframeElementcontentWindowieifra

知识大全 SignalR与WCF双工模式结合实现服务端数据直推浏览器端

SignalR与WCF双工模式结合实现服务端数据直推浏览器端  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 Javascript和C#之间的互相调用和访问

Javascript和C#之间的互相调用和访问  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这

知识大全 Extjs407 getValue()和getRawValue()区别

Extjs407getValue()和getRawValue()区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 Extjs单独定义各组件的实例代码

Extjs单独定义各组件的实例代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  网上看到的一个

知识大全 ExtJs设置GridPanel表格文本垂直居中示例

ExtJs设置GridPanel表格文本垂直居中示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!