1、什么是JSONP
JSONP是一种协议,为了解决客户端请求服务器跨域的问题,但是并非是正式的传输协议。该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。
2、解决方式
$(function(){
$("#btn").click(function(){
$.ajax({
url : "http://192.168.0.199/dsp/j/content?channel=ysjssh",
type : "GET",
contentType: 'application/json; charset=utf-8',
jsonpCallback:"success_jsonpCallback",
dataType : "jsonp", // 返回的数据类型,设置为JSONP方式
jsonp : "callback", //指定一个查询参数名称来覆盖默认的 jsonp 回调参数名 callback
success: function(callback){
alert(callback);
}
});
});
});
function callback(data) {
alert(data)
}
后台请求代码
@RequestMapping(value = "/j/xxx", produces = "text/script;charset=UTF-8")
@ResponseBody
public String getxxx(HttpServletRequest request, HttpServletResponse response, String callback,) {
Map<String, Object> resultMap = new HashMap<>();
JSONObject object = new JSONObject(resultMap);
return callback + "(" + object.toString() + ")";
}
划重点!!注意RequestMapping的注解内容,加入produces