JSONP的调用

原理
5.3.2 什么是jsonp?
Jsonp其实就是一个跨域解决方案。Js跨域请求数据是不可以的,但是js跨域请求js脚本是可以的。可以把数据封装成一个js语句,做一个方法的调用。跨域请求js脚本可以得到此脚本。得到js脚本之后会立即执行。可以把数据做为参数传递到方法中。就可以获得数据。从而解决跨域问题。

5.3.3 jsonp的原理:
浏览器在js请求中,是允许通过script标签的src跨域请求,可以在请求的结果中添加回调方法名,在请求页面中定义方法,既可获取到跨域请求的数据。

原理

eg:

现在像此端口发送请求 响应Js脚本
 URL_Serv: "http://localhost:8081/rest/itemcat/list?callback=category.getDataService",
 然后在后台处理该请求 回调原页面的方法(此方法是拼接字符串,利于理解,由于会乱码,可以在requestMapping后面设置返回参数)
 1,
 @RequestMapping(value="/itemcat/list",produces=MediaType.APPLICATION_JSON_VALUE+";charset=utf-8")
    @ResponseBody
    private String getItemCat(String callback){
        CatResult itemSevice = itemCatService.getItemSevice();
        //把pojo转换成字符串
        String json = JsonUtils.objectToJson(itemSevice);
        //拼装返回值
        String result = callback+"("+json+");";
        return result;
    }

Spring也提供了对应的解决办法( spring mvc 需要 4.1版本以上)
2,
    @RequestMapping("/itemcat/list")
    @ResponseBody
    private Object getItemCat(String callback){
        CatResult itemSevice = itemCatService.getItemSevice();
        MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(itemSevice);
        mappingJacksonValue.setJsonpFunction(callback);
        return mappingJacksonValue;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值