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 相关文章推荐
TopList标签和JavaScript结合两例
Aug 12 Javascript
jquery $.ajax入门应用二
Nov 19 Javascript
测试JavaScript字符串处理性能的代码
Dec 07 Javascript
javascript 类型判断代码分析
Mar 28 Javascript
js预载入和JavaScript Image()对象使用介绍
Aug 28 Javascript
关于javascript中的typeof和instanceof介绍
Dec 04 Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
Jan 26 Javascript
jQuery判断元素上是否绑定了指定事件的方法
Mar 17 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
Sep 06 Javascript
第三章之Bootstrap 表格与按钮功能
Apr 25 Javascript
JS实现的表头列头固定页面功能示例
Jan 10 Javascript
jquery.tableSort.js表格排序插件使用方法详解
Aug 12 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作的文本留言本的例子(一)
2006/10/09 PHP
php单例模式示例分享
2015/02/12 PHP
php实现学生管理系统
2020/03/21 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
addEventListener和attachEvent二者绑定的执行函数中的this不相同
2012/12/09 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
2016/09/27 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
Python对excel文档的操作方法详解
2018/12/10 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
python数值基础知识浅析
2019/11/19 Python
python-视频分帧&多帧合成视频实例
2019/12/10 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
logging level级别介绍
2020/02/21 Python
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
大专生自我鉴定范文
2013/10/01 职场文书
黄河的主人教学反思
2014/02/07 职场文书
学校三八妇女节活动情况总结
2014/03/09 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
先进工作者个人总结
2015/02/15 职场文书
《分数的意义》教学反思
2016/02/20 职场文书
提取视频中的音频 Python只需要三行代码!
2021/05/10 Python
SQLServer中exists和except用法介绍
2021/12/04 SQL Server
java高级用法JNA强大的Memory和Pointer
2022/04/19 Java/Android