问题描述:spring mvc中前端使用ajax发送请求,后台使用@ResponseBody直接写数据到响应体中,
返回一个字符串,ajax的success回调函数不执行,反而执行error的回调函数
上代码:
ajax请求:
$.ajax({
url:"/eCommerceSSM/updateAdmin",
type:"put",
data:JSON.stringify({admin_id:$("#form_update_admin input[name=‘admin_id‘]").val(),
admin_name:$("#form_update_admin input[name=‘admin_name‘]:not(:disabled)").val(),
admin_password:$("#form_update_admin input[name=‘pwd‘]:not(:disabled)").val()
}),
dataType:"json",
contentType: "application/json;charset=utf-8",
success:function(data){
console.log("update admin is returned");
console.log("======"+data.msg+",");
//修改失败
alert(data.msg+"---ddddd");
if(data.msg=="fail"){
alert("修改失败,可能用户名已被占用");
}else{
alert("修改成功");
showAdminList(curPage,pageSize);
$("#updateAdmin").modal("hide");
}
},error:function(error){
console.log(error);
//此处可以打印出响应的信息,响应状态也是200,响应的字符串也存在属性responseText中,数据库修改成功了
}
})
controller:
//修改admin
@RequestMapping(value="/updateAdmin",method=RequestMethod.PUT)
@ResponseBody
public String updateAdmin(@RequestBody Admin admin) {
String msg=null;
System.err.println("new admin:"+admin);
if(as.updateAdminPart(admin)>0) {
System.err.println("修改admin成功。。。。");
msg="success";
}else {
System.err.println("修改admin失败.......");
msg="fail";
}
return msg;
}
我的项目中相关配置:
//将spring mvc的响应对象自动转成json格式
<!-- 自动将查询到的数据,转成json格式 -->
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
最后问题的解决:
将controller中代码返回值改成ModelMap,将响应的字符串放入
//这个问题的造成原因: data:JSON.stringify({admin_id:$("#form_update_admin input[name=‘admin_id‘]").val(),
admin_name:$("#form_update_admin input[name=‘admin_name‘]:not(:disabled)").val(),
admin_password:$("#form_update_admin input[name=‘pwd‘]:not(:disabled)").val()
})
为什么怀疑是这个呢?因为我有一个添加的ajax请求,data也是使用JSON.stringify()进行的转换,也会出现响应成功了,但是不执行success的回调函数;
我将data的JSON.stringify()去掉就用普通的data:{}形式就可以正常的执行success
//希望能帮到你。。们
原文地址:https://www.cnblogs.com/gqblogs/p/springmvc-ajax-art1.html