代码如下:
$.ajax({
url: "./login/login.action",type:"post",
dataType:'json',
data:{
"userName":$("#userName").val().trim(),
"password":$("#password").val().trim(),
"verifyCode":$("#verifyCode").val().trim()
},
success:function(data){
var mes=data.message;
if(mes=="success"){
}
},
error:function(){
alert("登录异常 ,请稍候重试或联系管理员!");
return;
}
});
action代码:
try {
HttpServletRequest request = ServletActionContext.getRequest();
String code = request.getSession().getAttribute("verifyCode").toString();
if(code.equals(verifyCode)){
User user = loginService.loginUserVer(userName,password);
if (user == null) {
message = "error";
}
//获取本机IP地址
// String ip = getRequest().getRemoteAddr();
message = "success";
}else{
message = "code";
}
} catch (Exception e) {
e.printStackTrace();
message = "fail";
}
return "jsoners";
Struts代码:
<package name="loginStruts" extends="struts-default,json-default" namespace="/login">
<action name="verifycode" class="com.app.login.action.VerifycodeAction" method="execute"></action>
<action name="login" class="loginAction" method="execute">
<result name="jsoners" type="json"/>
</action>
<action name="loginIn" class="loginAction" method="loginIn">
<result name="success">/login/login_main.jsp</result>
</action>
</package>
运行能进入action,且执行正常,message值为success,但是ajax一直进入error,直接输入:http://localhost/xxx/login/login.action报:
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.jso 异常
查询资料得知,ajax会默认吧get开头的方法当做json数据转换,需将action中非set,get方法替换掉,或者将service中dao的get方法加上@JSON(serialize=false):
@JSON(serialize=false)
public LoginDao getLoginDao() {
return loginDao;
}