ajax请求的限制,不允许跨域请求资源
跨域请求:
请求协议/域名/端口号其中有一个不同的请求访问都是跨域请求,浏览器不能正常回显数据.
解决方法:Jsonp
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。
原理:1.HTML 的script标签中的src具有跨域的特性,可以利用这个特性进行加载资 源
2.定义一个方法名,对数据进行封装,进行js脚本解析
3.定义回调函数获取传入的参数,
通过jQuery使用jsonp请求
在SSM项目整合中
写一个简单的html页面来测试:
<script type="text/javascript">
$(function(){
alert("测试访问!")
$.ajax({
url:"http://manage/web/testJSONP",
type:"get",
dataType:"jsonp",
success:function (data){
alert(data.id);
}
});
})
</script>
写一个类来进行测试:先封装一个pojo类,然后在controller层写一个类来测试,
在这里我们可以使用spring提供的工具类来解决跨域.
@Controller
@RequestMapping
public class JsonpController {
@RequestMapping("/web/testJSONP")
@ResponseBody
public MappingJacksonValue testJacksonValue(String callback){
User user=new User();
user.setId(1);
user.setName("Sarah");
MappingJacksonValue jacksonValue=new MappingJacksonValue(user);
jacksonValue.setJsonpFunction(callback);
return jacksonValue;
}
}