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 相关文章推荐
让您的菜单不离网站
Oct 03 Javascript
javascript实现的动态文字变换
Jul 28 Javascript
Prototype1.6 JS 官方下载地址
Nov 30 Javascript
一些mootools的学习资源
Feb 07 Javascript
JS实现根据出生年月计算年龄
Jan 10 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
Jan 13 Javascript
jQuery添加和删除输入文本框标签代码
May 20 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
Oct 24 Javascript
微信小程序 本地存储及登录页面处理实例详解
Jan 11 Javascript
JS实现将二维数组转为json格式字符串操作示例
Jul 12 Javascript
小程序图片长按识别功能的实现方法
Aug 30 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
Mar 29 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分页函数
2016/07/20 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
基于jquery的滑动样例代码
2010/11/20 Javascript
5秒后跳转到另一个页面的js代码
2013/10/12 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证
2014/09/01 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
2018/08/15 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
Python get获取页面cookie代码实例
2018/09/12 Python
简单了解python的一些位运算技巧
2019/07/13 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
爬虫代理池Python3WebSpider源代码测试过程解析
2019/12/20 Python
Python虚拟环境venv用法详解
2020/05/25 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
关于tf.matmul() 和tf.multiply() 的区别说明
2020/06/18 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
结构工程研究生求职信
2013/10/13 职场文书
户外用品商店创业计划书
2014/01/29 职场文书
小班下学期评语
2014/05/04 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
初任公务员培训心得体会
2016/01/08 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript
深入讲解Vue中父子组件通信与事件触发
2022/03/22 Vue.js