跨域问题的解决Jsonp

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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值