JSON和JSONP
来源:互联网 发布:程序员的数学 epub 编辑:程序博客网 时间:2024/06/06 07:28
JSON和JSONP
一、jsonp的如何实现跨域请求数据
JSON的缩写为(JavaScript Object Notation), JSONP 的缩写(JavaScript Object Notation with Padding)
浏览器在设计的时候,出于对安全的考虑,Ajax不允许跨域数据请求。ajax请求的数据必须来至于同源。在网站越来越大,业务越来越复杂。出现了服务化,不同业务之间的数据请求也更加频繁。由业务的需求,跨域的情况越来越多。JSONP产生的目的就是为了支持跨域。Jquery的ajax默认支持jsonp:
$.ajax({
url: 'xxx //不同的域
type: 'GET', // jsonp只支持GET
dataType: 'jsonp',
jsonp: 'invCallback', // 回调函数,将于url拼接成xxxx&callback=invCallback
success: function(json) {
//do somthing
}
})
在浏览器中,有三中标签允许请求跨域数据,script,img,iframe。这三个都一个特点,使用的属性都是src。
jquery通过将url拼成虚拟的<script type="text/javascript" src=“url"></script>,来完成数据交互。
二、json和jsonp的区别
json是javascript对象,jsonp仅仅只是在json的外层加了一个回调方法。
三、后台如何实现jsonp
在后端中通过自定义springmvc的view来实现,并重写了view的render方法:
@Override
public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
if ("GET".equals(request.getMethod().toUpperCase())) {
String callback = request.getParameter(callbackParam);//取出方法
if (StringUtils.isBlank(callback)) {
super.render(model, request, response);
} else {
response.getOutputStream().print(callback + "(“);//拼接
super.render(model, request, response);
response.getOutputStream().print(");");
}
} else {
super.render(model, request, response);
}
}
方法识别请求参数中是否有callback参数,如何有callback则将callback拼接到json的外层。在编写的controller时,只需按照json的格式来写就Ok,
默认支持json和jsonp。
- JSON 和 JSONP
- JsonP和Json
- 说说JSON和JSONP
- JSON 和 JSONP
- JSON和JSONP
- JSON和JSONP
- 说说JSON和JSONP
- 说说JSON和JSONP
- 说说JSON和JSONP
- 说说json和jsonp
- json和jsonp
- 说说JSON和JSONP
- 说说JSON和JSONP
- 聊聊JSON和JSONP
- 说说JSON和JSONP
- 说说JSON和JSONP
- JSON和JSONP
- JSON和JSONP
- 打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
- 在工作中如何做到优秀,在工作之外如何做到自己(一)
- 阿斯达四大四大
- 将数字转换为汉字
- Android Service的启动方式
- JSON和JSONP
- android EditText 与 ImageView配合
- zoj 1904 Beavergnaw
- 使用存储着色器
- Postfix DSN消息
- proc_fs 使用说明
- Spring技术入门(三)
- "大账户"时代
- JavaScript 学习笔记