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 10 Javascript
javascript页面上使用动态时间具体实现
Mar 18 Javascript
javascript文件加载管理简单实现方法
Jul 25 Javascript
浅析$(function) ready和onload 的区别
Sep 03 Javascript
js 点击a标签 获取a的自定义属性方法
Nov 21 Javascript
详解Angular2组件之间如何通信
Jun 22 Javascript
JavaScript基本语法_动力节点Java学院整理
Jun 26 Javascript
搭建element-ui的Vue前端工程操作实例
Feb 23 Javascript
vue实现微信获取用户信息的方法
Mar 21 Javascript
jquery实现动态改变css样式的方法分析
May 27 jQuery
layui实现数据表格隐藏列的示例
Oct 25 Javascript
node.js中module模块的功能理解与用法实例分析
Feb 14 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&mysql(一)
2006/10/09 PHP
php图片上传存储源码并且可以预览
2011/08/26 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
jquery里的each使用方法详解
2010/12/22 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
深入理解JS中的变量及作用域、undefined与null
2014/03/04 Javascript
使用Node.js实现HTTP 206内容分片的教程
2015/06/23 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
2017/02/08 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
ndm:NPM的桌面GUI应用程序
2018/10/15 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
2019/08/11 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
Python使用itertools模块实现排列组合功能示例
2018/07/02 Python
python-itchat 获取微信群用户信息的实例
2019/02/21 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
python进程和线程用法知识点总结
2019/05/28 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
PyQt5 界面显示无响应的实现
2020/03/26 Python
工作说明书范文
2014/05/07 职场文书
春游踏青活动方案
2014/08/14 职场文书
党课培训心得体会
2014/09/02 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
小学音乐课歌曲《堆雪人》教学反思
2016/02/18 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android