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 相关文章推荐
利用jQuery实现可输入搜索文字的下拉框
Oct 23 Javascript
基于JQuery实现的Select级联
Jan 27 Javascript
node.js中的Socket.IO使用实例
Nov 04 Javascript
c#+jquery实现获取radio和checkbox的值
Sep 12 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
Nov 07 Javascript
基于Bootstrap3表格插件和分页插件实例详解
May 17 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
Jun 08 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
Jul 11 Javascript
关于Ajax的原理以及代码封装详解
Sep 08 Javascript
原生JS实现自定义下拉单选选择框功能
Oct 12 Javascript
vue中axios的二次封装实例讲解
Oct 14 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
Aug 13 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
玩家交还《星际争霸》原始码光盘 暴雪报以厚礼
2017/05/05 星际争霸
php5 图片验证码实现代码
2009/12/11 PHP
destoon二次开发入门示例
2014/06/20 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
2014/06/22 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
js 用CreateElement动态创建标签示例
2013/11/20 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
javascript验证身份证号
2015/03/03 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
2016/01/04 Javascript
jQuery实现的简单百分比进度条效果示例
2016/08/01 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
jquery仿微信聊天界面
2017/05/06 jQuery
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
python常见数制转换实例分析
2015/05/09 Python
Windows安装Python、pip、easy_install的方法
2017/03/05 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
PyCharm2018 安装及破解方法实现步骤
2019/09/09 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
超市业务员岗位职责
2013/12/05 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
以权谋私检举信范文
2015/03/02 职场文书
升学宴学生致辞
2015/07/27 职场文书
教师节随笔
2015/08/15 职场文书
Python字符串的转义字符
2022/04/07 Python