今天在使用ajax发送请求的时候遇到了一点问题,就是跨域。显然这就是需要用到JSONP了。
使用的是Jquery来完成的AJAX请求
$.getJSON('url?jsoncallback=?', {
categoryId: "1",
}, function (data) {});
js大致就是这个样子。
主要的是后台传输数据的格式变化。
比较一下 ajax返回json 和jsonp的格式:
{"message":"success", "code":"200","result":{"name":"test","id":1,"description":"11"}}
jsonp返回的格式:
callback({"message":"success", "code":"200","result":{"name":"test","id":1,"description":"11"}})
在url中callback传到后台的参数是什么,callback就是什么, jsonp比json外面有多了一层callback()。
既然返回的数据结构有区别,那么后台的提供服务的方法也是要发生变化的。我使用的方法就是在HttpServletResponse中进行操作。
String value = callback + "(" + JSON.toJSONString(result) + ")";
HttpServletResponse.getOutputStream().write(value.getBytes("UTF-8"));
直接写到response中,然后前台正常操作。
关于json和jsonp之间的关系与区别 这篇文章讲的很不错。







网友评论