Jsonp的代码应用:
$.ajax({ url : "http://sso.taotao.com/user/check/ "+escape(pin)+"/1?r=" + Math.random(),dataType : "jsonp",success : function(data) { checkpin = data?"1":"0"; if (data) { validateSettings.succeed.run(option); namestate = true; }else { validateSettings.error.run(option,"该用户名已占用!"); namestate = false; } } }); // 请求方法 GET // URL http://sso.taotao.com/user/check/{param}/{type }
/** * 检查数据是否可用 * * @param param * @param type * @return */ @RequestMapping(value = "check/{param}/{type}",method = RequestMethod.GET) public ResponseEntity<String> check(HttpServletRequest request,@PathVariable String param,@PathVariable Integer type) { try { Boolean bool = this.userService.check(param,type); // 获取callback方法名 String callback = request.getParameter("callback"); // 判断callback是否为空 String result = ""; if (StringUtils.isNotBlank(callback)) { // 如果不为空表示使用jsonp调用 // 使用方法名包裹原来的数据,位置成js数据 result = callback + "(" + bool + ")"; } else { // 如果为空表示直接调用,没有用到jsonp result = "" + bool; } // 查询数据,返回200 return ResponseEntity.ok(result); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } // 服务器错误,返回500 return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); }
jsonp请求形式默认给加上callback函数,经过后台处理,将callback函数返回并赋予参数值。。前台callback或success函数接收即可。