Ajax跨域请求

1、在Ajax请求客户端中添加dataType="jsonp"

2、服务端处理方式

方式一:判断是否是jsonp请求,后台方法中要接收参数String callback

    如果callback不是空的,那么就是jsonp请求,返回jsonp格式的字符串callback(json串)

    如果是空的,平常处理

方式二(spring4.1以上可以使用):

也要接收callback参数,做判断是否空

包装响应结果:new MappingJacksonValue(result)

设置jsonp的回调方法:new MappingJacksonValue(result).setJsonFunction(callback)

//方式一:通用版本
    /*@RequestMapping(value="/user/token/{token}",method=RequestMethod.GET,
            //指定返回响应数据的content-type
            produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ResponseBody
    public String getUserByToken(@PathVariable String token,String callback) {
        TaotaoResult result = userService.getUserByToken(token);
        //判断是否为jsonp请求
        if (StringUtils.isBlank(callback)) {
            return callback + "(" +JsonUtils.objectToJson(result) + ");";
        }
        return JsonUtils.objectToJson(result);
    }*/
    
    //方式二:spring4.1以上的版本可以用
    @RequestMapping(value="/user/token/{token}",method=RequestMethod.GET)
    @ResponseBody
    public Object getUserByToken(@PathVariable String token,String callback) {
        TaotaoResult result = userService.getUserByToken(token);
        //判断是否为jsonp请求
        if (StringUtils.isBlank(callback)) {
            //包装响应结果
            MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(result);
            //设置jsonp的回调方法
            mappingJacksonValue.setJsonpFunction(callback);
            return mappingJacksonValue;
        }
        return result;
    }

 

posted @ 2018-04-20 10:51  admin_jh  阅读(123)  评论(0编辑  收藏  举报