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 相关文章推荐
js 蒙版进度条(结合图片)
Mar 10 Javascript
深入理解Javascript闭包 新手版
Dec 28 Javascript
js监听输入框值的即时变化onpropertychange、oninput
Jul 13 Javascript
js中函数调用的两种常用方法使用介绍
Jul 17 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
Sep 25 Javascript
Bootstrap模态框禁用空白处点击关闭
Oct 20 Javascript
javascript中href和replace的比较(详解)
Nov 25 Javascript
基于node.js制作简单爬虫教程
Jun 29 Javascript
vue实现留言板todolist功能
Aug 16 Javascript
无限循环轮播图之运动框架(原生JS实现)
Oct 01 Javascript
JavaScript变量提升和严格模式实例分析
Jan 27 Javascript
element中table高度自适应的实现
Oct 21 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使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
php强制下载文件函数
2016/08/24 PHP
javascript分页代码(当前页码居中)
2012/09/20 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
js 时间函数应用加、减、比较、格式转换的示例代码
2013/08/23 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
2015/01/28 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
jQuery+css实现的切换图片功能代码
2016/01/27 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
jQuery Validate 相关参数及常用的自定义验证规则
2017/03/06 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
ReactNative踩坑之配置调试端口的解决方法
2017/07/28 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
vue.js实现回到顶部动画效果
2019/07/31 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
python调用新浪微博API项目实践
2014/07/28 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
python二分查找算法的递归实现方法
2016/05/12 Python
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
python re模块常见用法例举
2021/03/01 Python
车工岗位职责
2013/11/26 职场文书
最新创业融资计划书
2014/01/19 职场文书
安全检查管理制度
2014/02/02 职场文书
奠基仪式主持词
2014/03/20 职场文书
出纳试用期自我鉴定
2014/04/07 职场文书
中学生运动会口号
2014/06/07 职场文书
工程承包协议书
2014/10/20 职场文书
手残删除python之后的补救方法
2021/06/26 Python
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL