开发者社区> 问答> 正文

springmvc+jquery+ajax 报错 Unexpected token <?报错

不多说,先贴代码

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":"用户名不能为空"}}
这是什么问题,该如何解决?



展开
收起
爱吃鱼的程序员 2020-06-14 17:56:22 845 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    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>




    试过了,没有用啊问题解决了,用ajax异步提交,不要使用submit,使用submit必然会导致页面跳转或者刷新,自然就导致哪些在原来页面条件触发的事件丢失。解决办法,把button按钮类型从submit改为button,去掉form中的action,使用ajax获取表单中的数据,加上url:....,加上data:{key1:value1,key2:value,....}
    2020-06-14 17:56:38
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载