我有一些使用jQuery向服务器发送AJAX请求的Web应用程序。其中一个方法(在控制器中)返回一个ModelAndView对象,该对象可以是一个html代码或JSON对象 - 取决于存在的错误。 thid方法的输入参数是JSON数组(表单)。 方法定义:
@RequestMapping(value = "/generate", method = RequestMethod.POST, headers = BaseController.AJAX_HEADER)
public ModelAndView generate(@RequestBody HandlingReportForm form, HttpServletResponse response) {...}
jQuery方法如下:
jQuery.ajax({
'type': 'POST',
'url': url,
'contentType': 'application/json',
'data': JSON.stringify(data),
'dataType': 'json',
'success': callback,
error : function(jqXHR, textStatus, errorThrown) {
alert(errorThrown);
},
complete : function(jqXHR, textStatus) {
alert(textStatus);
}
});
服务器返回JSON数组时没有问题。服务器的响应是html时出现问题。我收到一个“parseerror”异常。我想jQuery试图将响应字符串解析为JSON。我对吗? 如何禁用自动解析?还有其他方法可以实现这种通用方法吗?
谢谢 谢谢
答案 0 :(得分:1)
dataType被称为json,因此JQuery会尝试将响应解释为json对象。
JQuery Ajax文档 -
dataType - “json”:将响应计算为JSON并返回JavaScript对象。在jQuery 1.4中,JSON数据以严格的方式解析;任何格式错误的JSON都会被拒绝,并抛出一个解析错误。 (有关正确的JSON格式的更多信息,请参阅json.org。)
最好返回单一的响应格式。
您也可以排除dataType参数 如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将产生XML,在1.4 JSON中将产生一个JavaScript对象,在1.4脚本中将执行脚本,以及任何东西else将作为字符串返回。)