发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
最近,由于工作用到了json和jsonp,由于前台是Android的,后台是MVC。一般MVC后台要返回JSON和XML这两种格式,所以选择了JSON。同时,也用到了JSONP,
简单来说,Jsonp的原理就是通过<script>标记引入一个定义好json数据的js,因为<script>标记是不受域名限制的,JSONP是基于JSON的一种形式,可以跨域传输数据。
创建一个员工类
public class Employee { public string Company { get; set; } public string Conference { get; set; } public string Name { get; set; } public int Age { get; set; } }
创建一个JsonpResult类,继承了ActionResult。
另外,JavaScriptSerializer序列器要应用System.Web.Extensions的程序集。
/// <summary> /// jsonp转换 /// </summary> public class JsonpResult : ActionResult { public object Obj { get; set; } public string CallbackName { get; set; } public JsonpResult(object obj, string callback) { this.Obj = obj; this.CallbackName = callback; } public override void ExecuteResult(ControllerContext context) { var js = new System.Web.Script.Serialization.JavaScriptSerializer(); var jsonp = this.CallbackName + "(" + js.Serialize(this.Obj) + ")"; context.HttpContext.Response.ContentType = "application/json"; context.HttpContext.Response.Write(jsonp); } }
MVC后台数据设置:
MVC控制器方法
public ActionResult ShopSetting(){
Employee e = new Employee();e.Age = 20;e.Company = "华为";e.Conference = "年终大会";e.Name= "Janekim";return GetJsonP(e, callback);//调用GetJsonP方法,传参数
}//GetJsonP方法
public ActionResult GetJsonP(object obj,string callback){if (string.IsNullOrEmpty(callback)) callback = "callback";
return new JsonpResult(obj,callback);
}
返回这样的结果:
callback({"Age":20,“Company”:"华为",Conference":"年终大会","Name":"Janekim"})
})
前台的调用:
function getUserInfo(checkUser) {$.ajax({type: "GET",url: "http://xxx/employee/getjsonp?callback=?",cache: false,error: function () {},jsonp: "callback",dataType: "jsonp",success: function (result) {checkUser(result);//checkUser是一个处理employee对象的function}});}
如果想看简单实现jsonp格式,请看http://www.cnblogs.com/janekimyan/p/Janekim_Yan.html
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
扩展springMVC消息转换器来支持jsonp数据格式
扩展springMVC消息转换器来支持jsonp数据格式。测试:普通的获取json方式:http://manage.taotao.com/rest/api/item/cat解决跨域请求问...
在MVC+WebAPI下添加对Jsonp支持的详细配置和源码下载
在MVC+WebAPI下添加对Jsonp支持的详细配置和源码下载MVC及WebAPI添加Jsonp支持。TryGetValue("callback", out callback)) ...
JSON Views 高级用法
public class View {interface Summary {}}public class User {@JsonView(View.Summary.class)and @JsonView(View.Both Jackson and JAXB annotations are recognizedJSON View are supported, allowin...
在ASP.NET MVC3 中利用JSONP跨域登录WEB系统
在ASP.NET MVC3 中利用JSONP跨域登录WEB系统。Obj = obj;Jsonp的服务器端的原理其实就是回调一个js函数名(这里是callback参数)将该参数传给服务端,接着再由服务器端执行这个callback js函数, 同时附...
jQuery.ajax使用方法
url (String): 装入页面的URL地址 Map(可选): (可选)发送到服务端的键/值对参数 callback (Function): (可选) 当远程页面装入完成时执行的函数。url (String): 装入页面的URL地址 Map(可选): (可...
java基础知识—JSONP解决跨域问题
后端要配合使用jsonp,那么首先得了解Jquery Ajax jsonp的一个特点: Jquery在发送一个Ajax jsonp请求时,会在访问链接的后面自动加上一个验证参数,这个参数是Jquery随机生成的,例如链接 http://ww...
java web跨域请求
Jsonp 方式跨域获取 json 数据原理 - JavaScript - web - JavaEye论坛
Jsonp 方式跨域获取 json 数据原理 - JavaScript - web - JavaEye论坛。DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-tran...
jquery的ajax和getJson跨域获取json数据
客户端浏览器,解析script标签,并将服务器端返回的数据,作为参数, 传入到了客户端预先定义好的 callback 函数(如上例中jquery $.ajax()方法封装的的success: function (json))里。发送请求时需要传...
微信扫码,在手机上查看选中内容