在Struts框架里 ajax 异步处理返回的json中包含多种类型数据解决方法
在Struts框架里 ajax 异步处理返回的json中包含多种类型数据
我的前端JSP
<html>
<head>
<title><s:text name="login.title"/></title>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function(){
$("#username").blur(function(){
var username= $("#username").val();
var password= $("#password").val();
$.ajax({
url:"${pageContext.request.contextPath }/json/ajax",
type:"post",
dataType:"json",
timeout:1000,
data:{
"user.username":username,
"user.password":password
},
success:function(result){
var rs =eval(result);
$("#username").val(rs[0]);
},
error:function(){
}
});
});
});
</script>
</head>
<body>
<div style="margin: 10% auto ;background-color: aqua;width: 400;text-align:center;">
<form action="${pageContext.request.contextPath }/user/login" method="post" >
<table width="350" style="margin: 5% ;text-align:center;">
<tr>
<td width="50"><s:text name="user.username"/>:</td>
<td width="200"><input type="text" name="user.username" id="username" /></td>
<td width="50"><font id="pu" ></font></td>
</tr>
<tr>
<td width="50"><s:text name="user.password"/>:</td>
<td width="200"><input type="text" name="user.password" id="password"/></td>
<td width="50"><font id="pp" ></font></td>
</tr>
<tr>
<td colspan ="3" >
<input type="submit" value=<s:text name="form.submit"/> />
<input type="reset" value=<s:text name="form.reset"/> />
</td>
</tr>
<tr height="5">
<td colspan="3" align="right">
<font size='2' color="red" style="text-decoration: underline;">
<s:text name="register"></s:text>
</font>
</td>
</tr>
</table>
<s:fielderror ></s:fielderror>
</form>
</div>
</body>
</html>
action
public class UserAction extends ActionSupport{
private User user;
private String result;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public String initLogin(){
return SUCCESS;
}
public String validateLogin(){
if(user.getUsername()==null||"".equals(user.getUsername())){
addFieldError("user.username", "用户名不可以为空!");
}
if(user.getPassword()==null||"".equals(user.getPassword())){
addFieldError("user.password", "密码不可以为空!");
}
return SUCCESS;
}
public String login(){
return SUCCESS;
}
public String ajax(){
if(user.getUsername().length()>6){
result ="用户名符合规范!";
}else{
result ="用户名不符合规范!";
}
return SUCCESS;
}
}
Struts.xml
<package name="json" namespace="/json" extends="json-default">
<!-- 拦截器设置 -->
<interceptors>
<!-- 声明自定义拦截器 -->
<interceptor name="login" class="com.hello.interceptor.CheckInterceptor"></interceptor>
<!-- 自定义拦截器栈 -->
<interceptor-stack name="myStack">
<interceptor-ref name="login">
<param name="excludeMethods">initLogin</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"/>
<action name="ajax" class="com.hello.action.UserAction" method="ajax">
<result type="json"></result>
<param name="includeProperties">String</param>
</action>
</package>
-----------------------------------------------------------------------------------------------------------------------
现象:前台接受到的json中包含了result 还有user 对象 请问下 应该怎么取出来
------解决思路----------------------
我的前端JSP
<html>
<head>
<title><s:text name="login.title"/></title>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function(){
$("#username").blur(function(){
var username= $("#username").val();
var password= $("#password").val();
$.ajax({
url:"${pageContext.request.contextPath }/json/ajax",
type:"post",
dataType:"json",
timeout:1000,
data:{
"user.username":username,
"user.password":password
},
success:function(result){
var rs =eval(result);
$("#username").val(rs[0]);
},
error:function(){
}
});
});
});
</script>
</head>
<body>
<div style="margin: 10% auto ;background-color: aqua;width: 400;text-align:center;">
<form action="${pageContext.request.contextPath }/user/login" method="post" >
<table width="350" style="margin: 5% ;text-align:center;">
<tr>
<td width="50"><s:text name="user.username"/>:</td>
<td width="200"><input type="text" name="user.username" id="username" /></td>
<td width="50"><font id="pu" ></font></td>
</tr>
<tr>
<td width="50"><s:text name="user.password"/>:</td>
<td width="200"><input type="text" name="user.password" id="password"/></td>
<td width="50"><font id="pp" ></font></td>
</tr>
<tr>
<td colspan ="3" >
<input type="submit" value=<s:text name="form.submit"/> />
<input type="reset" value=<s:text name="form.reset"/> />
</td>
</tr>
<tr height="5">
<td colspan="3" align="right">
<font size='2' color="red" style="text-decoration: underline;">
<s:text name="register"></s:text>
</font>
</td>
</tr>
</table>
<s:fielderror ></s:fielderror>
</form>
</div>
</body>
</html>
action
public class UserAction extends ActionSupport{
private User user;
private String result;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public String initLogin(){
return SUCCESS;
}
public String validateLogin(){
if(user.getUsername()==null||"".equals(user.getUsername())){
addFieldError("user.username", "用户名不可以为空!");
}
if(user.getPassword()==null||"".equals(user.getPassword())){
addFieldError("user.password", "密码不可以为空!");
}
return SUCCESS;
}
public String login(){
return SUCCESS;
}
public String ajax(){
if(user.getUsername().length()>6){
result ="用户名符合规范!";
}else{
result ="用户名不符合规范!";
}
return SUCCESS;
}
}
Struts.xml
<package name="json" namespace="/json" extends="json-default">
<!-- 拦截器设置 -->
<interceptors>
<!-- 声明自定义拦截器 -->
<interceptor name="login" class="com.hello.interceptor.CheckInterceptor"></interceptor>
<!-- 自定义拦截器栈 -->
<interceptor-stack name="myStack">
<interceptor-ref name="login">
<param name="excludeMethods">initLogin</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"/>
<action name="ajax" class="com.hello.action.UserAction" method="ajax">
<result type="json"></result>
<param name="includeProperties">String</param>
</action>
</package>
-----------------------------------------------------------------------------------------------------------------------
现象:前台接受到的json中包含了result 还有user 对象 请问下 应该怎么取出来
------解决思路----------------------
//前台接受的是后台返回的JSON数据,只要通过succes回调函数的result点属性就行了!
//JOSN可以类似对象那样点出来。。。