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 19 Javascript
document.createElement()用法及注意事项(ff下不兼容)
Mar 13 Javascript
js怎么终止程序return不行换jfslk
May 30 Javascript
javascript 手动给表增加数据的小例子
Jul 10 Javascript
原生js事件的添加和删除的封装
Jul 01 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
Dec 15 Javascript
JS实现灵巧的下拉导航效果代码
Aug 25 Javascript
浅谈对Angular中的生命周期钩子的理解
Jul 31 Javascript
单页面vue引入百度统计的使用方法示例详解
Oct 13 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
Dec 01 Javascript
JS图片懒加载技术实现过程解析
Jul 27 Javascript
JavaScript中遍历的十种方法总结
Dec 15 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
一个php作的文本留言本的例子(二)
2006/10/09 PHP
php中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
PHP正则表达式入门教程(推荐)
2016/05/18 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
javascript innerText和innerHtml应用
2010/01/28 Javascript
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
2016/04/26 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
全面了解JavaScript的数据类型转换
2016/07/01 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
详解通过JSON数据使用VUE.JS
2017/05/26 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
关于Js中new操作符的作用详解
2021/02/21 Javascript
基于python神经卷积网络的人脸识别
2018/05/24 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
python中p-value的实现方式
2019/12/16 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
广州迈达威.net面试题目
2012/03/10 面试题
JAVA程序设计笔试题面试题一套
2015/07/28 面试题
升职自荐信范文
2013/10/05 职场文书
生产车间主任的个人自我鉴定
2013/10/25 职场文书
合伙经营协议书
2014/04/18 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
群众路线领导班子四风对照检查材料
2014/09/27 职场文书
实例讲解Python中sys.argv[]的用法
2021/06/03 Python
使用numpy实现矩阵的翻转(flip)与旋转
2021/06/03 Python