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 相关文章推荐
用AJAX返回HTML片段中的JavaScript脚本
Jan 04 Javascript
js播放wav文件(源码)
Apr 22 Javascript
javascript的alert box在java中如何显示多行
May 18 Javascript
概述javascript在Google IE中的调试技巧
Nov 24 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
Mar 01 Javascript
Vue指令的钩子函数使用方法
Mar 20 Javascript
微信小程序中使用javascript 回调函数
May 11 Javascript
关于vue-resource报错450的解决方案
Jul 24 Javascript
node中使用log4js4.x版本记录日志的方法
Aug 20 Javascript
JavaScript中的函数式编程详解
Aug 22 Javascript
微信小程序自定义胶囊样式
Dec 27 Javascript
如何在vue-cli中使用css-loader实现css module
Jan 07 Vue.js
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
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
php array_filter除去数组中的空字符元素
2020/06/21 PHP
php 判断IP为有效IP地址的方法
2018/01/28 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
javascript 学习之旅 (1)
2009/02/05 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
php+js实现倒计时功能
2014/06/02 Javascript
jQuery中$.extend()用法实例
2015/06/24 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
js实现登录与注册界面
2017/11/01 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
vue实现页面切换滑动效果
2020/06/29 Javascript
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
Python入门篇之正则表达式
2014/10/20 Python
python fabric实现远程部署
2017/01/05 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
使用python绘制cdf的多种实现方法
2020/02/25 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
2020/04/19 Python
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
比较基础的php面试题及答案-编程题
2012/10/14 面试题
Android面试宝典
2013/08/06 面试题
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
岗位职责怎么写
2014/03/14 职场文书
小学生三分钟演讲稿
2014/08/18 职场文书
2014年医院十一国庆节活动方案
2014/09/15 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
2014年医生工作总结
2014/11/21 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技