在最近的分布式项目中,由于前端需要向后台请求数据,但不是同一个域名的,常用的ajax方法并不能成功调用,索然后台有数据返回,但是并不能被前端正常解析.
于是便查询知道了后台返回的数据格式的问题.不能用通常的return 串或者对象的形式来回传.
在controller中,需要返回值为MappingJacksonValue,并且在MappingJacksonValue对象中添加一个回调函数属性,这样会在数据回传时将前端的JQuery的回调
函数(一般前端默认为callback)一起封装到回传的数据中,前台的jspon就会在解析时调用函数来进行回显;
controller代码如下:
1 @RequestMapping("/check/{param}/{type}")
2 @ResponseBody
3 public MappingJacksonValue findCheckUser( @PathVariable String param,@PathVariable Integer type,String callback){
4
5 boolean flag=userService.findCheckUser(param,type);
6
7 MappingJacksonValue value=new MappingJacksonValue(SysResult.oK(flag));
8 value.setJsonpFunction(callback);
9
10 return value;
11 }
前台jspon代码如下:
1 $.ajax({
2 url : "http://sso.jt.com/user/check/"+escape(pin)+"/1?
3 r=" + Math.random(),
4 dataType : "jsonp",
5 success : function(data) {
6 checkpin = data.data?"1":"0";
7 if (!data.data) {
8 validateSettings.succeed.run(option);
9 namestate = true;
10 }else {
11 validateSettings.error.run(option, "该用户名已占用!");
12 namestate = false;
13 }
14 }
15 });
|