今天调用ajax进行异步检验一直不成功,后来发现由于我用的是json类型,但是在spring中注释中少了 @ResponseBody
开始错误少了@ResponseBody,执行时都是不执行ajax中success回调函数,经过查文档发现
@responsebody表示该方法的返回结果直接写入HTTP response body中
一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。
@RequestMapping(value="/drugclasscount", method=RequestMethod.POST,produces = "text/html;charset=UTF-8")
public JsonResponse drugClassCount(HttpServletResponse response,String jsonString){JsonResponse jr = new com.bojia.dispense.util.JsonResponse(true, "", null);
try {
response.setCharacterEncoding("UTF-8");
if(drugClassService.selectCount(JSON.parseObject(jsonString,DrugClassEntity.class))>0)
{
jr.setSuccess(false);
jr.setMessage("已有此类别编号");
}
} catch (Exception e) {
e.printStackTrace();
}finally{
return jr;
}
}
}
以下为正确代码,新增红色代码就OK了:
@RequestMapping(value="/drugclasscount", method=RequestMethod.POST,produces = "text/html;charset=UTF-8")
@ResponseBody
JsonResponse jr = new com.bojia.dispense.util.JsonResponse(true, "", null);
try {
response.setCharacterEncoding("UTF-8");
if(drugClassService.selectCount(JSON.parseObject(jsonString,DrugClassEntity.class))>0)
{
jr.setSuccess(false);
jr.setMessage("已有此类别编号");
}
} catch (Exception e) {
e.printStackTrace();
}finally{
return jr;
}
}
}