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