ASP.NET MVC中EasyUI的datagrid跨域调用实现代码


Posted in Javascript onMarch 14, 2012

最近项目中需要跨域调用其他项目的数据,其他项目也是使用的EasyUI的datagrid组件,开始以为直接在datagrid的url属性定义为其他项目的url地址即可,可是测试下发现的确是返回了json数据但是json数据提示“invalid label” 错误,网上搜索了下错误解决办法,参考 “JavaScript处理Json的invalid label错误解决办法“的方法利用datagrid的loadData方法加载并转换了json还是提示上述错误,感觉原因不在格式问题。

搜索了下JavaScript跨域调用的文章“JavaScript跨域访问问题解决方法”得到启发,发现原来是因为easyUI使用的是JQuery的异步方法加载数据,应该遵循JQuery的跨域访问规则,也就是上述文章中提到的url中需要加入jsoncallback=?回调函数参数,并且返回的json的格式必须修改为:回调函数名(json数据),而现在返回的数据只是json格式的数据没有回调函数名,自然提示格式错误,于是修改了ASP.NET MVC自定义的JsonResult类,具体如何编写自定义的JsonResult类见:自定义ASP.NET MVC JsonResult序列化结果,

代码如下:

public class CustomJsonResult:JsonResult 
{ 
public override void ExecuteResult(ControllerContext context) 
{ 
if (context == null) 
{ 
throw new ArgumentNullException("context"); 
} HttpResponseBase response = context.HttpContext.Response; 
if (!String.IsNullOrEmpty(ContentType)) 
{ 
response.ContentType = ContentType; 
} 
else 
{ 
response.ContentType = "application/json"; 
} 
if (ContentEncoding != null) 
{ 
response.ContentEncoding = ContentEncoding; 
} 
if (Data != null) 
{ 
#pragma warning disable 0618 
//跨域调用需要修改json格式jsoncallback 
if (context.HttpContext.Request.Params.AllKeys.Contains("jsoncallback")) 
{ 
String callback = context.HttpContext.Request.Params["jsoncallback"]; 
response.Write(callback+"("+JsonConvert.SerializeObject(Data)+")"); 
} 
else 
{ 
response.Write(JsonConvert.SerializeObject(Data)); 
} 
#pragma warning restore 0618 
} 
} 
}

EasyUI的datagrid的代码如下:
//datagrid 
$('#dg').datagrid({ 
url:'http://localhost:9000/ManagementSystem/ListCurrent?department=sss&jsoncallback=?', 
pageNumber: 1, 
pageSize: 20, 
pageList: [20, 40, 60, 80, 100], 
onDblClickRow: function(rowIndex) { 
edit(); 
} 
});

作者:mikel
出处:http://www.cnblogs.com/mikel/
Javascript 相关文章推荐
javascript 混合的构造函数和原型方式,动态原型方式
Dec 07 Javascript
子页向父页传值示例
Nov 27 Javascript
JavaScript中合并数组的N种方法
Sep 16 Javascript
js的toUpperCase方法用法实例
Jan 27 Javascript
js实现随机抽选效果、随机抽选红色球效果
Jan 13 Javascript
angularjs中回车键触发某一事件的方法
Apr 24 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
Apr 28 Javascript
详解如何使用webpack打包Vue工程
May 27 Javascript
想用好React的你必须要知道的一些事情
Jul 24 Javascript
Vue Echarts实现可视化世界地图代码实例
May 07 Javascript
微信小程序以ssm做后台开发的实现示例
Apr 08 Javascript
js实现盒子拖拽动画效果
Aug 09 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
Mar 14 #Javascript
javascript 进阶篇2 CSS XML学习
Mar 14 #Javascript
javascript 进阶篇1 正则表达式,cookie管理,userData
Mar 14 #Javascript
javascript 基础篇4 window对象,DOM
Mar 14 #Javascript
javascript 基础篇3 类,回调函数,内置对象,事件处理
Mar 14 #Javascript
javascript 基础篇2 数据类型,语句,函数
Mar 14 #Javascript
javascript 基础篇1 什么是js 建立第一个js程序
Mar 14 #Javascript
You might like
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
CodeIgniter基于Email类发邮件的方法
2016/03/29 PHP
laravel实现前后台路由分离的方法
2019/10/13 PHP
javascript 数据类型转换(parseInt,parseFloat)
2010/07/20 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
2014/12/19 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
浅析JavaScript异步代码优化
2019/03/18 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
原生js实现自定义消息提示框
2020/11/19 Javascript
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
python 正则式使用心得
2009/05/07 Python
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
举例讲解Python面相对象编程中对象的属性与类的方法
2016/01/19 Python
30秒轻松实现TensorFlow物体检测
2018/03/14 Python
Python带动态参数功能的sqlite工具类
2018/05/26 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
九月份红领巾广播稿
2014/01/22 职场文书
导游词之张家口
2019/12/13 职场文书
详解MySQL连接挂死的原因
2021/05/18 MySQL
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL