您的位置:首页 > 其它

strtuts+ajax 用户名无刷新验证简单实例

2013-04-30 20:05 531 查看
AjaxAction:

package ajax.demo;

import java.util.ArrayList;
import java.util.List;

import ajax.model.User;

import com.opensymphony.xwork2.ActionSupport;

public class AjaxAction extends ActionSupport {

/**
*
*/
private static final long serialVersionUID = 1L;

User user1 =  new User();
User user2 = new User();
User user = new User();

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

private List<User> users = new ArrayList<User>();

public List<User> getUsers() {
return users;
}

public void setUsers(List<User> users) {
this.users = users;
}

private String mydata;

public String getMydata() {
return mydata;
}

public void setMydata(String mydata) {
this.mydata = mydata;
}

public String loadInfo(){
mydata = "這是我的数据";
user1.setName("潘俊");
user1.setSex("男");
user2.setName("panjone");
user2.setSex("male");
users.add(user1);
users.add(user2);
return SUCCESS;
}

public String checkUser(){
if(user.getName().equals("panjone")){
mydata = "该用户名已存在!";
}else{
mydata = "恭喜你,该用户名可以注册!";
}
return SUCCESS;
}

}


 

struts.xml:

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />

<package name="default" namespace="" extends="struts-default">

<default-action-ref name="index" />

<global-results>
<result name="error">/error.jsp</result>
</global-results>

<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="error"/>
</global-exception-mappings>

</package>

<package name="ajax" extends="json-default">
<action name="ajaxAction" class="ajax.demo.AjaxAction" method="loadInfo">
<result name="success" type="json"></result>
</action>
<action name="checkAction" class="ajax.demo.AjaxAction" method="checkUser">
<result name="success" type="json"></result>
<param name="excludeProperties">users,user</param>
</action>
</package>

<!-- Add packages here -->

</struts>


jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
response.setCharacterEncoding("UTF-8");
%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>获取</title>
<script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>

<script type="text/javascript">
$(document).ready(function(){
$('#name').blur(function(){
var params = {
"user.name":$('#name').val(),
"user.sex":$('#sex').val()
};
$.ajax({
type:"get",
url:"ajax/checkAction",
dataType:"json",
data:params,
success:function(data){
document.getElementById("info").innerHTML="<div style='color:red;'>"+data.mydata+"</div>";

}
});
});
});
</script>

</head>
<body>
<input type="button" value="获取" id="btnGet" />
<form id="theForm" action="">
姓名:<input id="name" type="text" value="panjone" />
性别:<input id="sex" type="text" value="男" />
</form>
<div id="info"></div><br>
<div id="allUser"></div>
</body>
</html>


结果:





 

 

备注:以上的实例可以运行成功,但是本人使用到真实项目时遇到一些小问题。

比如action无法接受到值。折腾了一半天发现,删除 data:params,这一行之后,请求地址自动把参数传进去了(比如:http://127.0.0.1:8080/zlly/ajax/ajaxAction?user.loginId=4554545&clientId=454545 之类的)这时action可以接收到值了,但是注意的是struts.xml配置时 <result name="success" type="json"> <param name="root">mydata</param><result>
当你这样配置时,客户端要使用eval("("+data+")")才能接受到值。这是我出现的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: