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; }