ASP.NET MVC中EasyUI的datagrid跨域调用实现代码_jquery

最近项目中需要跨域调用其他项目的数据,其他项目也是使用的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/

时间: 2024-10-03 19:33:46

ASP.NET MVC中EasyUI的datagrid跨域调用实现代码_jquery的相关文章

jquery ajax jsonp跨域调用实例代码_jquery

客户端代码 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApp.WebForm1" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:

jquery ajax jsonp跨域调用实例代码

 今天研究了AJAX使用JSONP进行跨域调用的方法,发现使用GET方式和POST方式都可以进行跨域调用,这里简单分享下,方便需要的朋友 客户端代码     代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApp.WebForm1" %> <!DOCTYPE html

美女求救,easyui datagrid跨域调用问题

问题描述 各位大侠,我想用easyuidatagrid,调用其它网站的WEBAPI的方法,听说要跨域调用,请问如何处理,请给出具体代码,高分谢谢 解决方案 解决方案二:大公司的API都有现成的解决方案下载,小公司的还是直接看文档,一般文档里写的比较清楚,有的还有例子解决方案三:请你使用HttpClient在后台做请求然后ajax去请求本地的handler什么的解决方案四:一般来说这东西都只能底层调用解决方案五:getjson.解决方案六:由于浏览器安全机制跨域请求与一般请求是不一样的,如下解决方

PHP json格式和js json格式 js跨域调用实现代码_php技巧

先看一个js函数 复制代码 代码如下: function jsontest() { var json = [{'username':'crystal','userage':'20'},{'username':'candy','userage':'24'}]; alert(json[1].username); var json2 = [['crystal','20'],['candy','24']]; alert(json2[0][0]); } 这个函数,第一个alert(json[1].user

ASP.NET MVC使用EasyUI的datagrid多选提交保存教程_实用技巧

需要实现EasyUI的datagrid组件加入选择checkbox列,并提交后台批量添加的功能,页面代码如下: 复制代码 代码如下: <script language="javascript" type="text/javascript"> $(function() { //searchbox $('#selectgoods-keywords').searchbox({ searcher: function(val, name) { searchInfo

asp.net mvc中,在不修改Controller里的代码,不修改视图文件,不添加自定义Module的情况下,如何在页面&amp;amp;lt;/body&amp;amp;gt;前添加一段html代码

问题描述 请教问题:asp.netmvc中,在不修改Controller里的代码,不修改视图文件,不添加自定义Module的情况下,如何在页面</body>前添加一段html代码?. 解决方案 解决方案二:无解!你啥都不让改怎么添加...你要不改controller,还行,你controller和view都不让............我有个index.html的静态文件,你能在不修改index.html的情况下在index.html的body内添加一段html代码吗?

PHP中运用jQuery的Ajax跨域调用实现代码_php技巧

可以在页面定义一个调用方法,如下: 复制代码 代码如下: function getData(){ $.getJSON("http://123.123.123.123/?callback=?", { "m":"data",// 指定php的文件名字 "act":"getdata",// 指定php文件中的方法 "name":"问题儿童"// 传入的参数 }, funct

js中利用JSONP解决跨域问题

什么是跨域? 简单的来说,出于安全方面的考虑,javascript不能访问其他服务器上的内容,即"同源策略"(参考1,参考2).跨域就是通过某种手段绕过同源策略去访问不同服务器上的内容.只要域名.端口.协议任何一个不同,就是不同的域.协议或端口不同只能通过后端来解决. URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/

固定表头-在ASP.NET页面中,固定DATAGRID表头出现的问题

问题描述 在ASP.NET页面中,固定DATAGRID表头出现的问题 使用DIV标签加js纯页面固定表头,实际上就是将表头获取出来填充到一个DIV中,问题就是如何将表头和表中的内容对齐,特别是在表中数据动态改变列宽不固定的时候