前言:公司有个需求,就是把别的系统的页面嵌入我们系统中,但是嵌入的那个页面则需要ajax去获取数据,渲染出来;当你把别的系统的页面嵌入了你的系统中,这时再去点击页面连接执行ajax请求时你会发现F12会抛出一段异常,会告诉你,此请求存在跨域问题
这时我们则需要在ajax中加入jsonp代码如下:
$.ajax(function(){ url:"xxxxxxxx",//请求地址 data:{"xxxx":""},//请求携带的数据 dataType:"jsonp",//跨域设置 jsonp:"callback", success:function(data){ console.log(data) } });
按照上方ajax请求代码你会发现前端控制台还是会给你抛出一个警告Cross-Origin Read Blocking (CORB) blocked cross-origin response…
但是你会发现NetWork请求status是200 但是请求中的Response没有返回任何数据,这是你则需要去修改你的接口,代码如下:
//设置相应数据编码格式
response.setCharacterEncoding("UTF-8");
//相应数据格式,如果设置了这个格式不正确还是请求不了数据就试试 json或者html这几种格式(因为我这个接口图方便是在页面中)
response.setContentType("text/javascript");
//得到ajax jsonp属性设置的callback
String callback = request.getParameter("callback");
//写入相应数据中,这里需要把ajax传入的callback带上拼接成如下格式 jsonObject 是你的json格式数据
response.getWriter().write(callback+"("+jsonObject+")");
做完以上操作你会发现就代码又行了,就像喝了功能性饮料一样,它又行了