不多说,先贴代码
controller
@RequestMapping(value = "/register.json", method = RequestMethod.POST)
public @ResponseBody JsonVo<String> register(@RequestParam("realname") String realname,@RequestParam("email") String email,
@RequestParam("password") String password,User user){
JsonVo<String> json = new JsonVo<String>();
json.setResult(false);
if (StringUtils.isBlank(realname)){
json.getErrors().put("realname", "用户名不能为空");
}
if (StringUtils.isBlank(email)){
json.getErrors().put("email", "邮箱不能为空");
}
if (StringUtils.isBlank(password)) {
json.getErrors().put("password", "密码不能为空");
} else if (password.length() < 6 && password.length() > 30) {
json.getErrors().put("password", "密码最少6个字符,最多30个字符");
}
if(!StringUtils.isBlank(realname) && !StringUtils.isBlank(email) && !StringUtils.isBlank(password)
&& password.length() > 6 && password.length() < 30 ){
String md5Password = MD5Util.MD5(password);
user.setEmail(email);
user.setPassword(md5Password);
user.setRealname(realname);
userService.insertUser(user);
json.setResult(true);
}
return json;
}
JsonVo类
package wang.model;
import java.util.HashMap;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import wang.utils.ValidateException;
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class JsonVo<T> {
private boolean result;
private String msg;
private T t;
private HashMap<String, String> errors = new HashMap<String,String>();
public boolean isResult() {
return result;
}
public void setResult(boolean result) {
this.result = result;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
public HashMap<String, String> getErrors() {
return errors;
}
public void setErrors(HashMap<String, String> errors) {
this.errors = errors;
}
public void check() throws ValidateException {
if (this.getErrors().size() > 0) {
this.setResult(false);
throw new ValidateException("有错误发生");
} else {
this.setResult(true);
}
}
}
前台js
$('#form').submit(function(){
$.ajax({
dataType : 'json',
success : function(data){
console.log("ssss");
console.log(data.result);
if(data.result){
swal("Good job!", "您已经注册成功!", "success");
}else{
swal("NO!", "注册失败!", "error");
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
alert(errorThrown);
}
});
});
提交表单后,debug确定是已经跳转进controller执行完方法了并且返回值了的,但是并没有走success方法,而是走了error方法,依次弹框的结果是,200,4,parsererror,SyntaxError:Unexpected token <
然后跳转到http://localhost:8080/mvcdemo/user/register.json , 页面上只有一行字
{"result":false,"errors":{"realname":"用户名不能为空"}}这是什么问题,该如何解决?
ajax至少把请求类型写上吧。type:'POST'
在error回调里加上一行:console.log(arguments);看看控制台输出。
加不加都不影响的,之前就是加了的,后来见<form>里已经加了,就把它去掉了。console。log没打印出来,说{Object]Arguments <beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean><beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"><propertyname="messageConverters"><list><beanclass="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/></list></property></bean>版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。