Springmvc 用ajax提交表单

如果一切再重来 2016-04-24 01:41:36
我想用Springmvc提交登录表单。但是如果出错的话,会直接在本页面上的登录框上面显示错误信息。
于是我想用ajax提交表单,如果出错,直接返回错误信息
$(document).ready(function() {
$("#submit").click(function() {

//序列化表单元素,返回json数据
var params = $("#loginForm").serializeArray();
$.ajax({
type : "POST",
url : "${pageContext.request.contextPath}/login",
data : params,
success : function(data) {
alert("成功!");
},
error : function(e) {
alert("失败");
}
});
});
});

如果成功的话直接跳到主页面,失败的话,把错误信息显示在文本框里面。
public boolean login(Team team) {
Team team2 = teamMapper.findTeamByName(team.getTeamname());
if (team2 == null) {
this.errMessage = "账号不存在!";
return false;
} else if (!team2.getPassword().equals(team.getPassword())) {
this.errMessage = "密码不正确!";
return false;
}
return true;
}
怎么返回这个错误信息呢?
求大神指导!!!!
...全文
427 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
$.ajax({ type : "POST", url : "${pageContext.request.contextPath}/login", data : params, success : function(data) { alert(data); }, error : function(e) { alert("2"); } }); return false;
  • 打赏
  • 举报
回复
引用 3 楼 cherishme1988 的回复:
其实可以把后台方法调整为返回JSON数据方法,若boolean能判断true/false,但是错误信息返回不太方便吧? 我的做法:

        @RequestMapping(value="/login")
	@ResponseBody
	public String login(HttpServletRequest httpServletRequest,Team team) {
		Team team2 = teamMapper.findTeamByName(team.getTeamname());
		// 定义一个信息对象;
		Message message = new Message();
		if (team2 != null) {
			message.setInfo("信息匹配,登录成功");
			if (!team2.getPassword().equalsIgnoreCase(team.getPassword())) {
				message.setInfo("密码不匹配");
			}
		} else{
			message.setInfo("账号不存在")
		}
		// 将对象转成json格式返回,
		return JSON.toJSONString(message) ;
	}
至于前台就很方便操作啦。。。。

	$.ajax({
		type : "POST",
		url : "${pageContext.request.contextPath}/login",
		data : params,
		success : function(data) {
			// 校验成功,页面跳转;
			console.log("success");
			window.location.href ="xxxxxxxxxxx" ;
		},
		error : function(data) {
			// 输出错误信息;
			console.log(data.info);
		}
	});
思路是这样,你可以试试,哈哈,祝你好运
谢谢!我还有一个问题,麻烦帮看一下
  • 打赏
  • 举报
回复
@RequestMapping(value = "/login", method = RequestMethod.POST) @ResponseBody public String login(@Validated Team team, BindingResult br, Model model) throws UnsupportedEncodingException { // 定义一个信息对象; String message = ""; if (br.hasErrors()) { message = "数据绑定出错!"; } else if (!teamService.login(team)) { message = teamService.getErrMessage(); } else { message = "登录成功!"; model.addAttribute("teamName", team.getTeamname()); } return message; } 后台这样子写的,前段用ajax获得的结果是????,这是为什么?
quant.nxl 2016-04-24
  • 打赏
  • 举报
回复
其实可以把后台方法调整为返回JSON数据方法,若boolean能判断true/false,但是错误信息返回不太方便吧? 我的做法:

        @RequestMapping(value="/login")
	@ResponseBody
	public String login(HttpServletRequest httpServletRequest,Team team) {
		Team team2 = teamMapper.findTeamByName(team.getTeamname());
		// 定义一个信息对象;
		Message message = new Message();
		if (team2 != null) {
			message.setInfo("信息匹配,登录成功");
			if (!team2.getPassword().equalsIgnoreCase(team.getPassword())) {
				message.setInfo("密码不匹配");
			}
		} else{
			message.setInfo("账号不存在")
		}
		// 将对象转成json格式返回,
		return JSON.toJSONString(message) ;
	}
至于前台就很方便操作啦。。。。

	$.ajax({
		type : "POST",
		url : "${pageContext.request.contextPath}/login",
		data : params,
		success : function(data) {
			// 校验成功,页面跳转;
			console.log("success");
			window.location.href ="xxxxxxxxxxx" ;
		},
		error : function(data) {
			// 输出错误信息;
			console.log(data.info);
		}
	});
思路是这样,你可以试试,哈哈,祝你好运
梦域征途Yannik 2016-04-24
  • 打赏
  • 举报
回复
可以把登录的boolean值和message封装成一个实体类,后端通过login方法返回这个实体类对象.然后前端的success回调方法中对实体类对象的boolean值判定,若果true,跳转页面;如果false,则提示相应的message信息.
  • 打赏
  • 举报
回复
在前台$取一下试试

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧