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 相关文章推荐
学习YUI.Ext 第三天
Mar 10 Javascript
Prototype Object对象 学习
Jul 12 Javascript
js对象的比较
Feb 26 Javascript
Shell脚本实现Linux系统和进程资源监控
Mar 05 Javascript
JQuery select(下拉框)操作方法汇总
Apr 15 Javascript
jQuery实现带动画效果的多级下拉菜单代码
Sep 08 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
May 30 Javascript
jQuery实现炫丽的3d旋转星空效果
Jul 04 jQuery
Vue 实现简易多行滚动"弹幕"效果
Jan 02 Javascript
javascript将扁平的数据转为树形结构的高效率算法
Feb 27 Javascript
vue实现移动端返回顶部
Oct 12 Javascript
使用react-virtualized实现图片动态高度长列表的问题
May 28 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中常量,变量的作用域和生存周期
2013/08/10 PHP
php中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
2014/11/20 PHP
jQuery防止click双击多次提交及传递动态函数或多参数
2014/04/02 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
js如何打印object对象
2015/10/16 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
2018/12/13 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
d3.js 地铁轨道交通项目实战
2019/11/27 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
python看某个模块的版本方法
2018/10/16 Python
python读取指定字节长度的文本方法
2019/08/27 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
python如何获取apk的packagename和activity
2020/01/10 Python
python列表切片和嵌套列表取值操作详解
2020/02/27 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
用css3实现转换过渡和动画效果
2020/03/13 HTML / CSS
The Kooples美国官方网站:为情侣提供的法国当代时尚品牌
2019/01/03 全球购物
宣传部部长竞选演讲稿
2014/04/26 职场文书
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
解决golang结构体tag编译错误的问题
2021/05/02 Golang
在pycharm中无法import所安装的库解决方案
2021/05/31 Python
PHP RabbitMQ消息列队
2022/05/11 PHP