关于全注解SSH ajax问题

今天用全注解的SSH 写了一个简单的 关于AJAX的注册页面。自己捣鼓了几个小时才弄出来,现在将他记录下来。

主要的问题就是 后端的返回值前端无法接收。直接抛出异常。

主要原因是后端传值的方式出错。现在我给出一个例子
 

前端的代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.3.1.min.js"></script>
    
    
<script>
$(document).ready(function(){
	
	$("#form1").submit(function(){
		userName=$("#userName").val();
		userPassword=$("#userPassword").val();
		alert(userName);
		alert(userPassword);
		$.ajax({
			url:"${pageContext.request.contextPath }/Register",
			dataType:"json",
			type:"post",
			data:$("#form1").serialize(),
			success:function(data){
				alert(data.str);
			},
			error:function(){
				alert("ajax有问题!");
			}
		});
	});
});
</script>
</head>
<body>
<h1>Hello World From SSH</h1>
   <form id="form1"  onsubmit="return false" action="##" method="post">
   用户名:<s:textfield name="userName" id="userName"/><br/>
    密 码:<s:password name="userPassword" id="userPassword"/><br/>
      <input type="submit" id="submit" value="注册"/>
   </form>
</body>
</html>

这里主要的问题就是那个datatype

datatype 这里是指后端返回的格式  由于我们需要返回的json的格式,所以需要在这里填上 json

 

下面是action的代码:

@ParentPackage("json-default")
@Result(type="json")
public class RegisterAction extends ActionSupport {
	
	private static final long serialVersionUID = 1L;
	@Autowired
	private UserService userService ;
	//private User user;
	private String userName;
	private String userPassword;
	private String str;
	/*public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}*/
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserPassword() {
		return userPassword;
	}
	public void setUserPassword(String userPassword) {
		this.userPassword = userPassword;
	}
	
	@Action(value = "Register", results = { @Result(name ="SUCCESS", type="json")})											  
	public String Register()  {
		User user = new User();
		System.out.println(userName);
		user.setUserName(userName);
		user.setUserPassword(userPassword);
		//HttpServletResponse response = ServletActionContext.getResponse();
		//PrintWriter out = response.getWriter();

			userService.userRegister(user);
			str="你好";
			//out.print("插入成功!");
			//out.print("插入失败!");
			return SUCCESS;
	}
	public String getStr() {
		return str;
	}
	public void setStr(String str) {
		this.str = str;
	}

主要是这3个注解

一个是@ParentPackage("json-default") 

一个是@Result(type="json")

一个是@Action(value = "Register", results = { @Result(name ="SUCCESS", type="json")})    

第一个注解是使用json 在struts2中一定要声明 ,相当于

<package name="default" extends="json-default">
		//*****
 
</package>

第二个注解,如果没把它放在类前面,即使有第三个注解,那么ajax返回的格式还是

与js里面的datatype 格式不同。会触发error函数。

加上之后返回的类型就变成了

这样就能返回json格式了。

 

主要问题就是这些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值