1. 程式人生 > >SpringMVC中使用ajax請求controller後無法執行success回撥函式

SpringMVC中使用ajax請求controller後無法執行success回撥函式

1、今天上午寫了一個簡單的demo,用來驗證springMVC的功能,前臺實現如下:

$.ajax({
		type : 'post',
		url : webAppPath + "scl/pictureData/cmdRequestPictureData.do",
		data : {
			iedName : 'IL114'
		},
		dataType: "json",
		async : false,
		success : function(data) {
			debugger
		}
	});

請求的後臺controller如下
@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;
	}
}
希望後臺返回一個json格式的字串,前臺在封裝為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;
	}
}
才正常了。