1.JSONP
是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。JSON系统开发方法是一种典型的面向数据结构的分析和设计方法,以活动为中心,一连串的活动的顺序组合成一个完整的工作进程。
2.看下客户端
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript" src="/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
url:'http://localhost/jsonp_test1.json',
dataType:"jsonp",
jsonp:"jsonpcallback",
success:function(data){
var $ul = $("<ul></ul>");
$.each(data,function(i,v){
$("<li/>").text(v["id"] + " " + v["name"]).appendTo($ul)
});
$("#res").append($ul);
}
});
});
</script>
</head>
<body>
</body>
</html>
<ul></ul>
<div id="res"></div>
String str = "[{""id"":""1"",""name"":""测试1""},{""id"":""2"",""name"":""测试2""}]"
str = jsonp + "(" +str+");"
response.Write(str)
第二种 : 再看spring mvc服务端写法
@RequestMapping(value="/jsonp_test1.json", method=RequestMethod.GET)
@ResponseBody
public JSONPObject login(HttpServletRequest request,HttpServletResponse response,@RequestParam String callback) throws Exception {
ModelAndView model = new ModelAndView();
List l=new ArrayList();
for(int i=0;i<2;i++){
Otc otc = new Otc();
otc.setName("测试1");
otc.setId(i+1);
l.add(otc);
}
model.addObject("data", l);
return new JSONPObject(callback, model);
}
是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。JSON系统开发方法是一种典型的面向数据结构的分析和设计方法,以活动为中心,一连串的活动的顺序组合成一个完整的工作进程。
2.看下客户端
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript" src="/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
url:'http://localhost/jsonp_test1.json',
dataType:"jsonp",
jsonp:"jsonpcallback",
success:function(data){
var $ul = $("<ul></ul>");
$.each(data,function(i,v){
$("<li/>").text(v["id"] + " " + v["name"]).appendTo($ul)
});
$("#res").append($ul);
}
});
});
</script>
</head>
<body>
</body>
</html>
<ul></ul>
<div id="res"></div>
3.服务端
第一种: 普通servlet
String jsonp = request.getParameter("jsonpcallback")String str = "[{""id"":""1"",""name"":""测试1""},{""id"":""2"",""name"":""测试2""}]"
str = jsonp + "(" +str+");"
response.Write(str)
第二种 : 再看spring mvc服务端写法
@RequestMapping(value="/jsonp_test1.json", method=RequestMethod.GET)
@ResponseBody
public JSONPObject login(HttpServletRequest request,HttpServletResponse response,@RequestParam String callback) throws Exception {
ModelAndView model = new ModelAndView();
List l=new ArrayList();
for(int i=0;i<2;i++){
Otc otc = new Otc();
otc.setName("测试1");
otc.setId(i+1);
l.add(otc);
}
model.addObject("data", l);
return new JSONPObject(callback, model);
}
通过JSONPObject实现了简单的jsonp的封装,JSONPObject是jackson包中的类