知识大全 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跨域访问 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
解析Extjs与php数据交互(增删查改) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 代码如
代码如下:<><head><title>HelloWorld</title><metaequiv="ContentType"content="te
JavaScript跨域问题的解决方案 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! JS跨域问
获得iframe的window对象存在跨域访问限制 chromeiframeElementcontentWindowfirefoxiframeElementcontentWindowieifra
知识大全 SignalR与WCF双工模式结合实现服务端数据直推浏览器端
SignalR与WCF双工模式结合实现服务端数据直推浏览器端 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
Javascript和C#之间的互相调用和访问 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这
知识大全 Extjs407 getValue()和getRawValue()区别
Extjs407getValue()和getRawValue()区别 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快
Extjs单独定义各组件的实例代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 网上看到的一个
知识大全 ExtJs设置GridPanel表格文本垂直居中示例
ExtJs设置GridPanel表格文本垂直居中示例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!