SpringMVC中使用ajax請求controller後無法執行success回撥函式
阿新 • • 發佈:2019-01-27
1、今天上午寫了一個簡單的demo,用來驗證springMVC的功能,前臺實現如下:
$.ajax({
type : 'post',
url : webAppPath + "scl/pictureData/cmdRequestPictureData.do",
data : {
iedName : 'IL114'
},
dataType: "json",
async : false,
success : function(data) {
debugger
}
});
請求的後臺controller如下
希望後臺返回一個json格式的字串,前臺在封裝為json物件呼叫@Controller @RequestMapping(value = "/pictureData") public class PictureDataRequestController { @Resource(name = "sclPictureServiceImpl") private PictureDataRequestService pictureDataRequestService; @RequestMapping("cmdRequestPictureData.do") public String requestPictureData(@RequestParam(value = "iedName", required = false) String iedName) { InvokeResult result = new InvokeResult(); try { SCLConst.curIEDName = iedName; // Picture picture = pictureDataRequestService.getPictureData(); result.setSuccessful(true); // result.setResultValue(picture); } catch (Exception e) { result.setSuccessful(false); result.setResultHint(e.getMessage()); } String json = result.toJson(); System.out.println(json); return json; } }
但是,這個死活就進不來success,找了一上午原因也未果;
嘗試把前臺的dataType改為text後,雖然可以返回到success裡面,但是返回的data是一個錯誤的html文件,於是鬱悶了一上午?
我後天封裝的json格式也是標準的,為什麼就是不進呢?
偶然看到一個註解:@ResponseBody
百度後才發現,這個註解的功能就是把根據前臺設定的dataType,去呼叫相應的HttpMessageConverter,例如json和xml
於是:
修改後臺controller程式碼:
才正常了。@Controller @RequestMapping(value = "/pictureData") public class PictureDataRequestController { @Resource(name = "sclPictureServiceImpl") private PictureDataRequestService pictureDataRequestService; @RequestMapping("cmdRequestPictureData.do") @ResponseBody public String requestPictureData(@RequestParam(value = "iedName", required = false) String iedName) { InvokeResult result = new InvokeResult(); try { SCLConst.curIEDName = iedName; // Picture picture = pictureDataRequestService.getPictureData(); result.setSuccessful(true); // result.setResultValue(picture); } catch (Exception e) { result.setSuccessful(false); result.setResultHint(e.getMessage()); } String json = result.toJson(); System.out.println(json); return json; } }