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 相关文章推荐
去除链接虚线全面分析总结
Aug 15 Javascript
JavaScript 验证浏览器是否支持javascript的方法小结
May 17 Javascript
jQuery插件的写法分享
Jun 12 Javascript
jQuery拖拽div实现思路
Feb 19 Javascript
node.js中的fs.readSync方法使用说明
Dec 17 Javascript
12个超实用的JQuery代码片段
Nov 02 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
Jul 09 Javascript
详解关于vue-area-linkage走过的坑
Jun 27 Javascript
ES6中let 和 const 的新特性
Sep 03 Javascript
Cocos2d实现刮刮卡效果
Dec 20 Javascript
微信小程序基础教程之worker线程的使用方法
Jul 15 Javascript
JS前后端实现身份证号验证代码解析
Jul 23 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中使用sockets:从新闻组中获取文章
2006/10/09 PHP
PHP zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
ThinkPHP之getField详解
2014/06/20 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
javascript 写类方式之九
2009/07/05 Javascript
用JS写的一个TableView控件代码
2010/01/23 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
2011/01/01 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
2012/08/24 Javascript
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
js函数排序的实例代码
2013/07/01 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
TypeOf这些知识点你了解吗
2016/02/21 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
windows下python之mysqldb模块安装方法
2017/09/07 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
善意的谎言事例
2014/02/15 职场文书
库房保管员岗位职责
2014/04/07 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
微信小程序实现聊天室功能
2021/06/14 Javascript
python开发人人对战的五子棋小游戏
2022/05/02 Python